webpack 5.111.0 → 5.112.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 (781) hide show
  1. package/README.md +1 -1
  2. package/lib/Chunk.js +3 -966
  3. package/lib/Compilation.js +237 -138
  4. package/lib/Compiler.js +23 -24
  5. package/lib/Dependency.js +3 -551
  6. package/lib/DependencyTemplate.js +3 -69
  7. package/lib/EntryPlugin.js +3 -68
  8. package/lib/Entrypoint.js +3 -121
  9. package/lib/ExternalsPlugin.js +3 -92
  10. package/lib/FileSystemInfo.js +3 -4629
  11. package/lib/InitFragment.js +3 -204
  12. package/lib/LibraryTemplatePlugin.js +3 -46
  13. package/lib/ModuleFilenameHelpers.js +3 -400
  14. package/lib/ModuleNotFoundError.js +2 -2
  15. package/lib/MultiCompiler.js +43 -24
  16. package/lib/NormalModule.js +3 -2190
  17. package/lib/NullFactory.js +3 -22
  18. package/lib/ProgressPlugin.js +3 -908
  19. package/lib/RawModule.js +3 -197
  20. package/lib/RequestShortener.js +3 -37
  21. package/lib/SingleEntryPlugin.js +1 -1
  22. package/lib/WebpackError.js +2 -2
  23. package/lib/asset/AssetBytesGenerator.js +15 -9
  24. package/lib/asset/AssetBytesParser.js +3 -3
  25. package/lib/asset/AssetGenerator.js +61 -38
  26. package/lib/asset/AssetModule.js +2 -2
  27. package/lib/asset/AssetModulesPlugin.js +6 -9
  28. package/lib/asset/AssetParser.js +3 -3
  29. package/lib/asset/AssetSourceGenerator.js +15 -9
  30. package/lib/asset/AssetSourceParser.js +3 -3
  31. package/lib/asset/RawDataUrlModule.js +17 -10
  32. package/lib/asset/WebManifestGenerator.js +7 -7
  33. package/lib/asset/WebManifestParser.js +5 -5
  34. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  35. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  36. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  37. package/lib/async-modules/isGeneratorLowered.js +3 -3
  38. package/lib/bun/BunTargetPlugin.js +1 -1
  39. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  40. package/lib/{Cache.js → cache/Cache.js} +1 -1
  41. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  42. package/lib/cache/IdleFileCachePlugin.js +2 -2
  43. package/lib/cache/MemoryCachePlugin.js +6 -6
  44. package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
  45. package/lib/cache/PackFileCacheStrategy.js +11 -28
  46. package/lib/cache/ResolverCachePlugin.js +8 -4
  47. package/lib/cache/getLazyHashedEtag.js +3 -5
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +3 -9
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +192 -122
  56. package/lib/config/getClaimedAssetTypes.js +28 -21
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +13 -4
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  76. package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
  77. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
  78. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  79. package/lib/css/CssGenerator.js +57 -42
  80. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  81. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  82. package/lib/css/CssModule.js +27 -29
  83. package/lib/css/CssModulesPlugin.js +128 -44
  84. package/lib/css/CssParser.js +700 -311
  85. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  86. package/lib/css/cssMinify.js +130 -54
  87. package/lib/css/data.js +7017 -4648
  88. package/lib/css/syntax-parser.js +19873 -0
  89. package/lib/css/syntax-printer.js +6037 -0
  90. package/lib/css/syntax.js +37 -17370
  91. package/lib/debug/ProfilingPlugin.js +55 -23
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
  188. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  189. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  190. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  191. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  192. package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
  193. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  194. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  195. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  196. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
  200. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  201. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
  202. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
  203. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  204. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  205. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  206. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  207. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  208. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  209. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  210. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  211. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  213. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
  214. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  215. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  216. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  217. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  218. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
  219. package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
  220. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  221. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  222. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  223. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  224. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
  225. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
  226. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
  227. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  228. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  229. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  230. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  231. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
  232. package/lib/{util → devtool}/generateDebugId.js +1 -1
  233. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  234. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  235. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  236. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  237. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  238. package/lib/dll/DelegatedModule.js +20 -18
  239. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  240. package/lib/dll/DelegatedPlugin.js +1 -1
  241. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  242. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  243. package/lib/dll/DllEntryPlugin.js +3 -3
  244. package/lib/dll/DllModule.js +11 -9
  245. package/lib/dll/DllModuleFactory.js +3 -3
  246. package/lib/dll/DllPlugin.js +18 -6
  247. package/lib/dll/DllReferencePlugin.js +102 -26
  248. package/lib/dll/LibManifestPlugin.js +9 -7
  249. package/lib/electron/ElectronTargetPlugin.js +2 -2
  250. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  251. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  252. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  253. package/lib/entry/EntryPlugin.js +75 -0
  254. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  255. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  256. package/lib/errors/BuildCycleError.js +1 -1
  257. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  258. package/lib/errors/ChunkRenderError.js +1 -1
  259. package/lib/errors/CodeGenerationError.js +1 -1
  260. package/lib/errors/CommentCompilationWarning.js +1 -1
  261. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  262. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  263. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  264. package/lib/errors/DllManifestError.js +26 -0
  265. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  266. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  267. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  268. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  269. package/lib/errors/ErrorHelpers.js +222 -0
  270. package/lib/errors/ExternalStarReexportError.js +2 -2
  271. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  272. package/lib/errors/HookWebpackError.js +6 -5
  273. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  274. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  275. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  276. package/lib/errors/ModuleBuildError.js +1 -1
  277. package/lib/errors/ModuleDependencyError.js +2 -2
  278. package/lib/errors/ModuleDependencyWarning.js +2 -2
  279. package/lib/errors/ModuleError.js +1 -1
  280. package/lib/errors/ModuleHashingError.js +1 -1
  281. package/lib/errors/ModuleNotFoundError.js +3 -3
  282. package/lib/errors/ModuleParseError.js +1 -1
  283. package/lib/errors/ModuleRestoreError.js +1 -1
  284. package/lib/errors/ModuleStoreError.js +1 -1
  285. package/lib/errors/ModuleWarning.js +1 -1
  286. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  287. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  288. package/lib/errors/NodeStuffInWebError.js +7 -2
  289. package/lib/errors/PathVariableError.js +31 -0
  290. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  291. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  292. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  293. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  294. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  295. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  296. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  297. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  298. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  299. package/lib/errors/WebpackError.js +12 -3
  300. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  301. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  302. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  303. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  304. package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
  305. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  306. package/lib/externals/ExternalsPlugin.js +99 -0
  307. package/lib/fs/FileSystemInfo.js +4642 -0
  308. package/lib/{util → fs}/fs.js +22 -9
  309. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  310. package/lib/graph/Chunk.js +985 -0
  311. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  312. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  313. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  314. package/lib/graph/Dependency.js +628 -0
  315. package/lib/graph/Entrypoint.js +136 -0
  316. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
  317. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  318. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
  319. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  320. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
  321. package/lib/{util → graph}/findGraphRoots.js +20 -21
  322. package/lib/graph/isDependencyKind.js +23 -0
  323. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  324. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  326. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  327. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  328. package/lib/hmr/LazyCompilationPlugin.js +34 -26
  329. package/lib/html/HtmlGenerator.js +168 -125
  330. package/lib/html/HtmlModule.js +6 -2
  331. package/lib/html/HtmlModulesPlugin.js +260 -215
  332. package/lib/html/HtmlParser.js +598 -292
  333. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  334. package/lib/html/data.js +23 -1
  335. package/lib/html/htmlMinify.js +120 -51
  336. package/lib/html/syntax-parser.js +15796 -0
  337. package/lib/html/syntax-printer.js +1034 -0
  338. package/lib/html/syntax.js +37 -14062
  339. package/lib/html/xmlMinify.js +67 -0
  340. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  341. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  342. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  343. package/lib/ids/IdHelpers.js +4 -4
  344. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  345. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  346. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  347. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  348. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  349. package/lib/{util → ids}/numberHash.js +1 -1
  350. package/lib/index.js +348 -99
  351. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
  352. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  353. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  354. package/lib/javascript/ChunkHelpers.js +64 -4
  355. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  356. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
  357. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
  358. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  359. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  360. package/lib/javascript/JavascriptGenerator.js +25 -18
  361. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  362. package/lib/javascript/JavascriptModule.js +4 -3
  363. package/lib/javascript/JavascriptModulesPlugin.js +458 -256
  364. package/lib/javascript/JavascriptParser.js +916 -287
  365. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  366. package/lib/javascript/MergedEntryExports.js +196 -0
  367. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  368. package/lib/javascript/StartupHelpers.js +6 -6
  369. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  370. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  371. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  372. package/lib/javascript/data.js +533 -122
  373. package/lib/javascript/jsMinify.js +272 -0
  374. package/lib/javascript/regexp.js +67 -32
  375. package/lib/javascript/syntax-parser.js +18561 -0
  376. package/lib/javascript/syntax-printer-data.js +933 -0
  377. package/lib/javascript/syntax-printer.js +47106 -0
  378. package/lib/javascript/syntax.js +20 -10946
  379. package/lib/json/JsonData.js +1 -1
  380. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  381. package/lib/json/JsonGenerator.js +17 -11
  382. package/lib/json/JsonModule.js +2 -2
  383. package/lib/json/JsonModulesPlugin.js +1 -1
  384. package/lib/json/JsonParser.js +5 -5
  385. package/lib/json/jsonMinify.js +69 -0
  386. package/lib/library/AbstractLibraryPlugin.js +28 -15
  387. package/lib/library/AmdLibraryPlugin.js +4 -4
  388. package/lib/library/AssignLibraryPlugin.js +27 -11
  389. package/lib/library/EnableLibraryPlugin.js +1 -1
  390. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  391. package/lib/library/JsonpLibraryPlugin.js +1 -1
  392. package/lib/library/LibraryTemplatePlugin.js +53 -0
  393. package/lib/library/ModuleLibraryPlugin.js +207 -285
  394. package/lib/library/SystemLibraryPlugin.js +6 -8
  395. package/lib/library/UmdLibraryPlugin.js +3 -4
  396. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  397. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  398. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  399. package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
  400. package/lib/loaders/LoaderRunner.js +160 -22
  401. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  402. package/lib/logging/Logger.js +7 -9
  403. package/lib/logging/ProgressPlugin.js +957 -0
  404. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  405. package/lib/{Generator.js → module/Generator.js} +38 -14
  406. package/lib/{Module.js → module/Module.js} +122 -54
  407. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  408. package/lib/module/NormalModule.js +2348 -0
  409. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  410. package/lib/module/NullFactory.js +29 -0
  411. package/lib/{Parser.js → module/Parser.js} +3 -3
  412. package/lib/module/RawModule.js +208 -0
  413. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  414. package/lib/{util → module}/extractSourceMap.js +2 -2
  415. package/lib/{util → module}/findCaseMismatch.js +2 -2
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  417. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  418. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  419. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  420. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  421. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  422. package/lib/node/NodeTargetPlugin.js +1 -1
  423. package/lib/node/NodeWatchFileSystem.js +61 -15
  424. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  425. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  426. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  427. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  428. package/lib/node/nodeConsole.js +2 -4
  429. package/lib/optimize/AggressiveMergingPlugin.js +5 -7
  430. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  431. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  432. package/lib/optimize/ConcatenatedModule.js +305 -309
  433. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  434. package/lib/optimize/ConstExportsPlugin.js +7 -7
  435. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  436. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  437. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
  438. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
  439. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  440. package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
  441. package/lib/optimize/InlineExports.js +11 -3
  442. package/lib/optimize/InnerGraph.js +5 -13
  443. package/lib/optimize/InnerGraphPlugin.js +17 -23
  444. package/lib/optimize/LazyBarrels.js +584 -0
  445. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  446. package/lib/optimize/LimitChunkCountPlugin.js +21 -15
  447. package/lib/optimize/MangleExportsPlugin.js +8 -9
  448. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  449. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  450. package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
  451. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  452. package/lib/optimize/RealContentHashPlugin.js +16 -7
  453. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  454. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  455. package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
  456. package/lib/optimize/SplitChunksPlugin.js +715 -159
  457. package/lib/{util → optimize}/TupleQueue.js +9 -9
  458. package/lib/optimize/chunkSetIntersections.js +437 -0
  459. package/lib/{util → optimize}/deterministicGrouping.js +25 -30
  460. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  461. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  462. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  463. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  464. package/lib/output/SSRManifestPlugin.js +349 -0
  465. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  466. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  467. package/lib/performance/BroadContextsPlugin.js +4 -4
  468. package/lib/performance/CacheEffectivenessPlugin.js +5 -7
  469. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  470. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  471. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  472. package/lib/performance/DynamicExportsPlugin.js +2 -2
  473. package/lib/performance/EvalUsagePlugin.js +3 -3
  474. package/lib/performance/HotspotsPlugin.js +11 -10
  475. package/lib/performance/LargeModulesPlugin.js +2 -3
  476. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  477. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  478. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  479. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  480. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  481. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  482. package/lib/performance/SizeLimitsPlugin.js +13 -16
  483. package/lib/performance/TopLevelThisPlugin.js +8 -7
  484. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  485. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  486. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  487. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  488. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  489. package/lib/performance/UnusedFederationPlugin.js +2 -4
  490. package/lib/performance/UnusedModulesPlugin.js +5 -4
  491. package/lib/performance/getModuleSize.js +1 -1
  492. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  493. package/lib/performance/isOnlyReexported.js +7 -6
  494. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  495. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  496. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
  497. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  499. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  500. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  501. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  502. package/lib/prefetch/ResourceHintPlugin.js +82 -65
  503. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
  505. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  506. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  507. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  508. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  509. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  510. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  511. package/lib/resolve/getResolveOptionsKey.js +59 -0
  512. package/lib/rules/RuleSetCompiler.js +27 -46
  513. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  514. package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
  515. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  516. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  517. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  519. package/lib/runtime/CompatRuntimeModule.js +4 -4
  520. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  521. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  524. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  525. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  526. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  527. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
  528. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  529. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  530. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  531. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  532. package/lib/runtime/GlobalRuntimeModule.js +5 -7
  533. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  534. package/lib/runtime/HelperRuntimeModule.js +16 -1
  535. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  536. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
  537. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  538. package/lib/runtime/NonceRuntimeModule.js +2 -2
  539. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  540. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  541. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  542. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  543. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  544. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  545. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  546. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  547. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  549. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  550. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  551. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  552. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  553. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  554. package/lib/runtime/baseUri.js +1 -1
  555. package/lib/schemes/DataUriPlugin.js +4 -7
  556. package/lib/schemes/HttpUriPlugin.js +67 -11
  557. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  558. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  559. package/lib/serialization/BinaryMiddleware.js +9 -9
  560. package/lib/serialization/FileMiddleware.js +19 -19
  561. package/lib/serialization/ObjectMiddleware.js +77 -49
  562. package/lib/serialization/SerializerMiddleware.js +2 -2
  563. package/lib/serialization/SingleItemMiddleware.js +4 -2
  564. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  565. package/lib/sharing/ConsumeSharedModule.js +18 -14
  566. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  567. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  568. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  569. package/lib/sharing/ProvideSharedDependency.js +1 -1
  570. package/lib/sharing/ProvideSharedModule.js +11 -9
  571. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  572. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  573. package/lib/sharing/SharePlugin.js +102 -9
  574. package/lib/sharing/ShareRuntimeModule.js +6 -6
  575. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  576. package/lib/{util → sharing}/semver.js +19 -19
  577. package/lib/sharing/utils.js +59 -2
  578. package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
  579. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  580. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  581. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  582. package/lib/{Stats.js → stats/Stats.js} +4 -4
  583. package/lib/stats/StatsFactory.js +14 -13
  584. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  585. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  586. package/lib/template/DependencyTemplate.js +77 -0
  587. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  588. package/lib/template/InitFragment.js +223 -0
  589. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  590. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  591. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  592. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
  593. package/lib/{Template.js → template/Template.js} +13 -11
  594. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
  595. package/lib/typescript/TypeScriptPlugin.js +5 -6
  596. package/lib/util/LocConverter.js +4 -7
  597. package/lib/util/RequestShortener.js +44 -0
  598. package/lib/util/SortableSet.js +87 -22
  599. package/lib/util/SourceProcessor.js +364 -66
  600. package/lib/util/TupleSet.js +27 -27
  601. package/lib/util/WeakTupleMap.js +10 -12
  602. package/lib/util/buildDiagnostics.js +2 -2
  603. package/lib/util/comparators.js +10 -10
  604. package/lib/util/concatenate.js +32 -151
  605. package/lib/util/createHooksRegistry.js +1 -2
  606. package/lib/util/createMappings.js +111 -0
  607. package/lib/util/dataURL.js +96 -18
  608. package/lib/util/deprecation.js +1 -1
  609. package/lib/util/extractComments.js +118 -0
  610. package/lib/util/formatLocation.js +1 -1
  611. package/lib/util/globUtils.js +197 -16
  612. package/lib/util/haltVisitors.js +51 -0
  613. package/lib/util/handlerKeys.js +2 -2
  614. package/lib/util/hash/wasm-hash.js +3 -4
  615. package/lib/util/identifier.js +117 -1
  616. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  617. package/lib/util/internalSerializables.js +295 -103
  618. package/lib/util/magicComment.js +12 -7
  619. package/lib/util/makeSerializable.js +23 -4
  620. package/lib/util/parseJson.js +1 -1
  621. package/lib/util/preloadModuleType.js +5 -2
  622. package/lib/util/registerExternalSerializer.js +2 -2
  623. package/lib/util/removeBOM.js +1 -1
  624. package/lib/util/runtime.js +1 -1
  625. package/lib/util/serialization.js +4 -1
  626. package/lib/util/source.js +2 -2
  627. package/lib/util/terminalColors.js +161 -0
  628. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  629. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  630. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  631. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
  632. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
  633. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  634. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  635. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  636. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  637. package/lib/wasm/wasmModuleFilename.js +2 -2
  638. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  639. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
  640. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  641. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
  642. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
  643. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  644. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  645. package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
  646. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  647. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  648. package/lib/{Watching.js → watch/Watching.js} +8 -8
  649. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  650. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  651. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  652. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  653. package/lib/web/JsonpTemplatePlugin.js +1 -1
  654. package/lib/webpack.js +27 -17
  655. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  656. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  657. package/package.json +70 -40
  658. package/schemas/WebpackOptions.check.js +2 -1
  659. package/schemas/WebpackOptions.d.json.ts +2 -0
  660. package/schemas/WebpackOptions.json +294 -74
  661. package/schemas/plugins/BannerPlugin.check.js +2 -1
  662. package/schemas/plugins/BannerPlugin.json +29 -2
  663. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  664. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  665. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  666. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  667. package/schemas/plugins/IgnorePlugin.json +1 -1
  668. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  669. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  670. package/schemas/plugins/ManifestPlugin.json +3 -3
  671. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  672. package/schemas/plugins/ProgressPlugin.json +2 -7
  673. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  674. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  675. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  676. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  677. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  678. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  679. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  680. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  681. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  682. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  683. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  684. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  685. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  686. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  687. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  688. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  689. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  690. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  691. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  692. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  693. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  694. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  695. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  696. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  697. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  698. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  699. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  700. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  701. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  702. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  703. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  704. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  705. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  706. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  707. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  708. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  709. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  710. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  711. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  712. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  713. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  714. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  715. package/types.d.ts +13915 -8414
  716. package/lib/ErrorHelpers.js +0 -107
  717. package/lib/LazyBarrel.js +0 -388
  718. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  719. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  720. package/lib/javascript/ChunkFormatHelpers.js +0 -71
  721. package/lib/javascript/grammar.js +0 -5546
  722. package/lib/javascript/parser.js +0 -1494
  723. package/lib/javascript/regexpData.js +0 -51
  724. package/lib/performance/getSourceModules.js +0 -22
  725. package/lib/util/Semaphore.js +0 -65
  726. package/lib/util/objectToMap.js +0 -15
  727. package/schemas/WebpackOptions.check.d.ts +0 -7
  728. package/schemas/_container.json +0 -155
  729. package/schemas/_sharing.json +0 -118
  730. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  732. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  733. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  734. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  735. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  736. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  737. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  740. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  741. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  745. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  746. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  748. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  749. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  750. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  751. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  752. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  753. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  754. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  755. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  758. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  759. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  760. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  763. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  764. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  765. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  768. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  769. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  770. /package/lib/{util → css}/conventions.js +0 -0
  771. /package/lib/{util → css}/topologicalSort.js +0 -0
  772. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  773. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  774. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  775. /package/lib/{util → javascript}/StackedMap.js +0 -0
  776. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  777. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  778. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  779. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  780. /package/lib/{util → optimize}/Queue.js +0 -0
  781. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const RuntimeGlobals = require("../RuntimeGlobals");
8
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
9
9
  const lazyModule = require("../util/lazyModule");
10
10
 
11
11
  /** @import Compiler from "../Compiler" */
@@ -83,10 +83,9 @@ class ChunkPrefetchPreloadPlugin {
83
83
  );
84
84
  }
85
85
  if (chunkMap.cssPreload) {
86
- // CSS-only preload (`parser.javascript.dynamicImportCssPreload`):
87
- // the trigger reaches the CSS `.s` handler itself
88
- // (`<link rel="preload" as="style">`), so it asks for the handlers
89
- // alone — nothing here calls the one that fans out over them.
86
+ // A CSS-only preload reaches the CSS handler itself, so it asks for
87
+ // the handlers alone: nothing here calls the function fanning out
88
+ // across them.
90
89
  set.add(RuntimeGlobals.preloadChunkHandlers);
91
90
  compilation.addLazyRuntimeModule(
92
91
  chunk,
@@ -96,10 +95,9 @@ class ChunkPrefetchPreloadPlugin {
96
95
  }
97
96
  }
98
97
  );
99
- // The handlers object is what carries the runtime module, so a chunk asking
100
- // only for it — a trigger that reaches one handler by name — ships no
101
- // fan-out function. Whether one is wanted is read here rather than in
102
- // `create`, which runs after the requirement pass is over.
98
+ // The handlers object carries the runtime module, so a chunk asking only for
99
+ // it ships no fan-out function. That is read here rather than in `create`,
100
+ // which runs once the requirement pass is over.
103
101
  for (const [type, fn, handlers] of /** @type {const} */ ([
104
102
  [
105
103
  "prefetch",
@@ -4,11 +4,11 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const RuntimeGlobals = require("../RuntimeGlobals");
8
- const RuntimeModule = require("../RuntimeModule");
9
- const Template = require("../Template");
7
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
8
+ const RuntimeModule = require("../runtime/RuntimeModule");
9
+ const Template = require("../template/Template");
10
10
 
11
- /** @import Chunk, { ChunkChildOfTypeInOrder } from "../Chunk" */
11
+ /** @import Chunk, { ChunkChildOfTypeInOrder } from "../graph/Chunk" */
12
12
  /** @import Compilation from "../Compilation" */
13
13
 
14
14
  class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
@@ -4,12 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const RuntimeGlobals = require("../RuntimeGlobals");
8
- const RuntimeModule = require("../RuntimeModule");
9
- const Template = require("../Template");
7
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
8
+ const RuntimeModule = require("../runtime/RuntimeModule");
9
+ const Template = require("../template/Template");
10
10
 
11
11
  /** @import Compilation from "../Compilation" */
12
- /** @import { ChunkChildIdsByOrdersMap } from "../Chunk" */
12
+ /** @import { ChunkChildIdsByOrdersMap } from "../graph/Chunk" */
13
13
 
14
14
  class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
15
15
  /**
@@ -4,12 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const RuntimeGlobals = require("../RuntimeGlobals");
8
- const RuntimeModule = require("../RuntimeModule");
9
- const Template = require("../Template");
7
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
8
+ const RuntimeModule = require("../runtime/RuntimeModule");
9
+ const Template = require("../template/Template");
10
10
 
11
11
  /** @import Compilation from "../Compilation" */
12
- /** @import { ChunkChildIdsByOrdersMap } from "../Chunk" */
12
+ /** @import { ChunkChildIdsByOrdersMap } from "../graph/Chunk" */
13
13
 
14
14
  class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
15
15
  /**
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const ModuleDependency = require("./ModuleDependency");
8
+ const ModuleDependency = require("../dependencies/core/ModuleDependency");
9
9
 
10
10
  class PrefetchDependency extends ModuleDependency {
11
11
  /**
@@ -5,9 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const PrefetchDependency = require("./dependencies/PrefetchDependency");
8
+ const PrefetchDependency = require("./PrefetchDependency");
9
9
 
10
- /** @import Compiler from "./Compiler" */
10
+ /** @import Compiler from "../Compiler" */
11
11
 
12
12
  const PLUGIN_NAME = "PrefetchPlugin";
13
13
 
@@ -5,18 +5,13 @@
5
5
  "use strict";
6
6
 
7
7
  const { RawSource } = require("webpack-sources");
8
- const ModuleFilenameHelpers = require("../ModuleFilenameHelpers");
8
+ const isDependencyKind = require("../graph/isDependencyKind");
9
9
  const {
10
10
  ASSET_URL_TYPE,
11
11
  JAVASCRIPT_TYPE
12
- } = require("../ModuleSourceTypeConstants");
13
- const RuntimeGlobals = require("../RuntimeGlobals");
14
- const CssUrlDependency = require("../dependencies/CssUrlDependency");
15
- const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
16
- const URLDependency = require("../dependencies/URLDependency");
17
- const WorkerDependency = require("../dependencies/WorkerDependency");
12
+ } = require("../module/ModuleSourceTypeConstants");
13
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
18
14
  const lazyModule = require("../util/lazyModule");
19
- const memoize = require("../util/memoize");
20
15
  const {
21
16
  PUBLIC_PATH_AUTO,
22
17
  PUBLIC_PATH_FULL_HASH
@@ -24,12 +19,15 @@ const {
24
19
  const { guessAsAttribute } = require("./parseResourceHintOptions");
25
20
  const parseResourceHintOptions = require("./parseResourceHintOptions");
26
21
 
27
- /** @import Chunk from "../Chunk" */
28
- /** @import ChunkGraph from "../ChunkGraph" */
29
- /** @import CodeGenerationResults from "../CodeGenerationResults" */
22
+ /** @import Chunk from "../graph/Chunk" */
23
+ /** @import CssUrlDependency from "../dependencies/css/CssUrlDependency" */
24
+ /** @import HtmlSourceDependency from "../dependencies/html/HtmlSourceDependency" */
25
+ /** @import URLDependency from "../dependencies/url/URLDependency" */
26
+ /** @import ChunkGraph from "../graph/ChunkGraph" */
27
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
30
28
  /** @import Compilation from "../Compilation" */
31
29
  /** @import Compiler from "../Compiler" */
32
- /** @import Module, { RuntimeRequirements } from "../Module" */
30
+ /** @import Module, { RuntimeRequirements } from "../module/Module" */
33
31
 
34
32
  /**
35
33
  * The attributes a `<link>` carries besides its href and `as`.
@@ -55,11 +53,14 @@ const parseResourceHintOptions = require("./parseResourceHintOptions");
55
53
  * @import {
56
54
  * ResourceHintsInitial as ResourceHintsConfig,
57
55
  * ResourceHintsOptions,
56
+ * RuleSetCondition,
57
+ * RuleSetLogicalConditions,
58
58
  * UrlHintRule
59
59
  * } from "../../declarations/WebpackOptions"
60
60
  */
61
- /** @import { HtmlResourceHint } from "../dependencies/HtmlEntryDependency" */
61
+ /** @import { HtmlResourceHint } from "../dependencies/html/HtmlEntryDependency" */
62
62
  /** @import { ResourceHintOptions } from "./parseResourceHintOptions" */
63
+ /** @import { MagicCommentOptions } from "../util/magicComment" */
63
64
 
64
65
  /**
65
66
  * @typedef {object} ResolvedResourceHints
@@ -136,9 +137,6 @@ const getStartupAssetHintRuntimeModule = lazyModule(() =>
136
137
  );
137
138
  // only reached once a build has an html module, so a js-only build never
138
139
  // pays for the html generator this drags in
139
- const getHtmlEntryDependency = memoize(() =>
140
- require("../dependencies/HtmlEntryDependency")
141
- );
142
140
 
143
141
  const PLUGIN_NAME = "ResourceHintPlugin";
144
142
 
@@ -156,18 +154,18 @@ const JS_CHUNK_FILE_REGEXP = /\.m?jsx?$/i;
156
154
  /**
157
155
  * True for the URL-referenced-asset deps that can carry resource-hint flags.
158
156
  * Type guard so callers keep the narrowed union without re-listing the classes.
159
- * @param {import("../Dependency")} dep dependency
157
+ * @param {import("../graph/Dependency")} dep dependency
160
158
  * @returns {dep is URLDependency | CssUrlDependency | HtmlSourceDependency} whether it is a URL asset dep
161
159
  */
162
160
  const isUrlAssetDep = (dep) =>
163
- dep instanceof URLDependency ||
164
- dep instanceof CssUrlDependency ||
165
- dep instanceof HtmlSourceDependency;
161
+ isDependencyKind(dep, "url") ||
162
+ isDependencyKind(dep, "css-url") ||
163
+ isDependencyKind(dep, "html-source");
166
164
 
167
165
  /**
168
166
  * Entry chunk name for a hint's `hostChunks` (Vite's `hostId`); the id is a
169
167
  * stable fallback for unnamed chunks.
170
- * @param {import("../Chunk")} chunk chunk
168
+ * @param {import("../graph/Chunk")} chunk chunk
171
169
  * @returns {string} name or stringified id
172
170
  */
173
171
  const chunkHostName = (chunk) => chunk.name || String(chunk.id);
@@ -178,8 +176,8 @@ const chunkHostName = (chunk) => chunk.name || String(chunk.id);
178
176
  * single call. One shared walk for the entrypoint-hint and HTML-hint passes,
179
177
  * which would otherwise each re-implement the same 4-level nesting.
180
178
  * @param {Compilation} compilation compilation
181
- * @param {Iterable<import("../Chunk")>} chunks chunks to scan
182
- * @returns {IterableIterator<{ dep: URLDependency | CssUrlDependency | HtmlSourceDependency, target: Module, chunk: import("../Chunk") }>} hinted assets
179
+ * @param {Iterable<import("../graph/Chunk")>} chunks chunks to scan
180
+ * @returns {IterableIterator<{ dep: URLDependency | CssUrlDependency | HtmlSourceDependency, target: Module, chunk: import("../graph/Chunk") }>} hinted assets
183
181
  */
184
182
  function* iterateHintedUrlAssets(compilation, chunks) {
185
183
  const { chunkGraph, moduleGraph } = compilation;
@@ -201,6 +199,38 @@ function* iterateHintedUrlAssets(compilation, chunks) {
201
199
  }
202
200
  }
203
201
 
202
+ /** @type {WeakMap<UrlHintRule, (request: string) => boolean>} */
203
+ const urlHintMatchers = new WeakMap();
204
+
205
+ /**
206
+ * A rule's `test`, `include` and `exclude` as one predicate, read as `module.rules`
207
+ * reads a condition, so `and`/`or`/`not`/`glob` work too. Compiled once per rule.
208
+ * @param {UrlHintRule} rule rule setting at least one of the three
209
+ * @returns {(request: string) => boolean} whether the rule applies to a request
210
+ */
211
+ const getUrlHintMatcher = (rule) => {
212
+ let matcher = urlHintMatchers.get(rule);
213
+ if (matcher === undefined) {
214
+ /** @type {RuleSetCondition[]} */
215
+ const all = [];
216
+ if (rule.test !== undefined) all.push(rule.test);
217
+ if (rule.include !== undefined) all.push(rule.include);
218
+ /** @type {RuleSetLogicalConditions} */
219
+ const condition = {};
220
+ if (all.length > 0) condition.and = all;
221
+ if (rule.exclude !== undefined) condition.not = rule.exclude;
222
+
223
+ const RuleSetCompiler = require("../rules/RuleSetCompiler");
224
+
225
+ matcher = new RuleSetCompiler([]).compileCondition(
226
+ "urlHints",
227
+ condition
228
+ ).fn;
229
+ urlHintMatchers.set(rule, matcher);
230
+ }
231
+ return matcher;
232
+ };
233
+
204
234
  /**
205
235
  * Merge the matching `UrlHintRule`s for a request. Rules match by
206
236
  * `test`/`include`/`exclude` (omit all three → matches everything); later
@@ -219,14 +249,7 @@ const matchUrlHints = (rules, request) => {
219
249
  (rule.test !== undefined ||
220
250
  rule.include !== undefined ||
221
251
  rule.exclude !== undefined) &&
222
- !ModuleFilenameHelpers.matchObject(
223
- /** @type {EXPECTED_ANY} */ ({
224
- test: rule.test,
225
- include: rule.include,
226
- exclude: rule.exclude
227
- }),
228
- request
229
- )
252
+ !getUrlHintMatcher(rule)(request)
230
253
  ) {
231
254
  continue;
232
255
  }
@@ -246,7 +269,7 @@ const matchUrlHints = (rules, request) => {
246
269
  * When `output.resourceHints` is a function, invoke it and return its
247
270
  * descriptors; otherwise pass through. Callback signature — see `ResourceHints`
248
271
  * schema entry.
249
- * @param {import("../Entrypoint")} entrypoint entrypoint
272
+ * @param {import("../graph/Entrypoint")} entrypoint entrypoint
250
273
  * @param {ResourceHintsConfig | undefined} hints top-level config
251
274
  * @param {string} entryName entry name
252
275
  * @param {"html" | "js"} hostType page type
@@ -360,7 +383,7 @@ const collectEntrypointHints = (compilation, entryName, hints) => {
360
383
  // URL-referenced deps carrying prefetch/preload. Walk entrypoint's initial
361
384
  // chunks × modules × deps (async chunks are handled by the on-demand
362
385
  // runtime via `dynamicImportPrefetch/Preload` parser options).
363
- /** @type {Set<import("../Chunk")>} */
386
+ /** @type {Set<import("../graph/Chunk")>} */
364
387
  const chunkSet = new Set(entrypoint.chunks);
365
388
  const runtimeChunk = entrypoint.getRuntimeChunk();
366
389
  if (runtimeChunk) chunkSet.add(runtimeChunk);
@@ -385,10 +408,9 @@ const collectEntrypointHints = (compilation, entryName, hints) => {
385
408
  if (dep.fetchPriority) h.fetchPriority = dep.fetchPriority;
386
409
  push(h);
387
410
  }
388
- // `hostType`: `"html"` iff the entrypoint has an extracted HTML page
389
- // (any `HtmlEntryDependency` with elementKind `script`/`script-module` on
390
- // any HTML module points at this entryName); SSR frameworks reading
391
- // `stats.entrypoints[name].resourceHints` see `"js"`.
411
+ // `hostType` is `"html"` only where the entrypoint has an extracted page, that
412
+ // is where some HTML module's script dependency names this entry. An SSR
413
+ // framework reading the stats sees `"js"`.
392
414
  let hostType = /** @type {"html" | "js"} */ ("js");
393
415
 
394
416
  outer: for (const module of compilation.modules) {
@@ -397,10 +419,9 @@ const collectEntrypointHints = (compilation, entryName, hints) => {
397
419
  }
398
420
  const presDeps = module.presentationalDependencies;
399
421
  if (!presDeps) continue;
400
- const HtmlEntryDependency = getHtmlEntryDependency();
401
422
  for (const dep of presDeps) {
402
423
  if (
403
- dep instanceof HtmlEntryDependency &&
424
+ isDependencyKind(dep, "html-entry") &&
404
425
  dep.entryName === entryName &&
405
426
  (dep.elementKind === "script" || dep.elementKind === "script-module")
406
427
  ) {
@@ -472,13 +493,13 @@ const collectStartupAssetHintLines = (
472
493
  for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
473
494
  for (const block of module.blocks) {
474
495
  for (const dep of block.dependencies) {
475
- if (!(dep instanceof WorkerDependency)) continue;
496
+ if (!isDependencyKind(dep, "worker")) continue;
476
497
  const hint = dep.options.resourceHint;
477
498
  if (!hint || (!hint.preload && !hint.prefetch)) continue;
478
499
  const group = chunkGraph.getBlockChunkGroup(block);
479
500
  if (!group) continue;
480
501
  const workerChunk =
481
- /** @type {import("../Entrypoint")} */
502
+ /** @type {import("../graph/Entrypoint")} */
482
503
  (group).getEntrypointChunk();
483
504
  if (workerChunk.id === null || seenWorkerChunks.has(workerChunk.id)) {
484
505
  continue;
@@ -513,7 +534,7 @@ const collectStartupAssetHintLines = (
513
534
  const perAsset = new Map();
514
535
  for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
515
536
  const deps =
516
- /** @type {{ dependencies?: import("../Dependency")[] }} */
537
+ /** @type {{ dependencies?: import("../graph/Dependency")[] }} */
517
538
  (module).dependencies;
518
539
  if (!deps) continue;
519
540
  for (const dep of deps) {
@@ -715,9 +736,9 @@ class ResourceHintPlugin {
715
736
  * @param {ResourceHintDep} dep dep to mutate in place
716
737
  * @param {UrlHintRule[] | undefined} rules parser-scoped `urlHints` rules
717
738
  * @param {string} request the asset request (for rule matching)
718
- * @param {Record<string, EXPECTED_ANY> | null | undefined} commentOptions parsed magic-comment options (`null` / `undefined` skips override phase)
719
- * @param {import("../NormalModule")} module module for emitting warnings on invalid comments
720
- * @param {import("../Dependency").DependencyLocation} loc loc for warnings
739
+ * @param {MagicCommentOptions | null | undefined} commentOptions parsed magic-comment options (`null` / `undefined` skips override phase)
740
+ * @param {import("../module/NormalModule")} module module for emitting warnings on invalid comments
741
+ * @param {import("../graph/Dependency").DependencyLocation} loc loc for warnings
721
742
  * @returns {void}
722
743
  */
723
744
  static applyResourceHints(dep, rules, request, commentOptions, module, loc) {
@@ -737,15 +758,14 @@ class ResourceHintPlugin {
737
758
  const hints = this._hints;
738
759
 
739
760
  compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
740
- // Lazy-computed on first access — walk every HTML module's
741
- // `HtmlEntryDependency`s, resolve each named entry, and collect
742
- // every URL asset dep target reachable from its ordered chunks.
743
- // One pass produces two views: a per-entry list (consumed by
744
- // `HtmlEntryDependency.Template` to emit `<link>` tags) and a
745
- // global `WeakSet` (consumed by `StartupAssetHintRuntimeModule`
746
- // to skip the JS runtime `<link>` for the same asset).
747
- // Deterministic (module graph is fixed by seal time) and cheap
748
- // (only fires when a JS chunk actually produces hints).
761
+ // WHY: computed on first access. One walk of every HTML module's
762
+ // `HtmlEntryDependency`s — resolving each named entry and collecting every
763
+ // URL asset dep reachable from its ordered chunks — yields both views: a
764
+ // per-entry list, which `HtmlEntryDependency.Template` emits the `<link>`
765
+ // tags from, and a global `WeakSet`, which `StartupAssetHintRuntimeModule`
766
+ // reads to skip the JS runtime `<link>` for the same asset. Deterministic,
767
+ // the module graph being fixed by seal time, and cheap, since it only fires
768
+ // when a JS chunk actually produces hints.
749
769
  /** @type {Map<string, HtmlHintedAsset[]> | undefined} */
750
770
  let perEntry;
751
771
  /** @type {WeakSet<Module> | undefined} */
@@ -762,10 +782,9 @@ class ResourceHintPlugin {
762
782
  // they don't affect module resolution, only rendering.
763
783
  const presDeps = module.presentationalDependencies;
764
784
  if (!presDeps) continue;
765
- const HtmlEntryDependency = getHtmlEntryDependency();
766
785
  for (const dep of presDeps) {
767
786
  if (
768
- !(dep instanceof HtmlEntryDependency) ||
787
+ !isDependencyKind(dep, "html-entry") ||
769
788
  (dep.elementKind !== "script" &&
770
789
  dep.elementKind !== "script-module")
771
790
  ) {
@@ -773,11 +792,10 @@ class ResourceHintPlugin {
773
792
  }
774
793
  const entrypoint = compilation.entrypoints.get(dep.entryName);
775
794
  if (!entrypoint) continue;
776
- // Mirror `getEntrypointChunksInLoadOrder`: entry chunk +
777
- // runtime chunk + all initial siblings (`entrypoint.chunks`
778
- // includes splitChunks output). Async `import()` chunks
779
- // stay on the on-demand runtime and are NOT HTML-hinted.
780
- /** @type {Set<import("../Chunk")>} */
795
+ // Mirrors `getEntrypointChunksInLoadOrder`: the entry, runtime and
796
+ // every initial sibling. An async `import()` chunk stays on the
797
+ // on-demand runtime and is never HTML-hinted.
798
+ /** @type {Set<import("../graph/Chunk")>} */
781
799
  const chunks = new Set(entrypoint.chunks);
782
800
  const entry = entrypoint.getEntrypointChunk();
783
801
  if (entry) chunks.add(entry);
@@ -864,10 +882,9 @@ class ResourceHintPlugin {
864
882
  });
865
883
  }
866
884
 
867
- // SSR manifest: serialize each entrypoint's resolved hints to a JSON
868
- // asset (the same descriptors as `stats.entrypoints[].resourceHints`)
869
- // so an SSR server can inject the `<link>` tags itself. `"none"`
870
- // yields empty lists (via `collectEntrypointHints`).
885
+ // The SSR manifest serializes each entrypoint's resolved hints to a JSON
886
+ // asset, the same descriptors the stats carry, so an SSR server can inject
887
+ // the tags itself. `"none"` yields empty lists.
871
888
  const rhOptions = compilation.outputOptions.resourceHints;
872
889
  const manifestPath = rhOptions && rhOptions.manifest;
873
890
  if (manifestPath) {
@@ -6,9 +6,9 @@
6
6
 
7
7
  const { SyncWaterfallHook } = require("tapable");
8
8
  const Compilation = require("../Compilation");
9
- const RuntimeGlobals = require("../RuntimeGlobals");
10
- const RuntimeModule = require("../RuntimeModule");
11
- const Template = require("../Template");
9
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
10
+ const RuntimeModule = require("../runtime/RuntimeModule");
11
+ const Template = require("../template/Template");
12
12
  const { guessAsAttribute } = require("./parseResourceHintOptions");
13
13
 
14
14
  /**
@@ -4,9 +4,9 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const RuntimeGlobals = require("../RuntimeGlobals");
8
- const RuntimeModule = require("../RuntimeModule");
9
- const Template = require("../Template");
7
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
8
+ const RuntimeModule = require("../runtime/RuntimeModule");
9
+ const Template = require("../template/Template");
10
10
 
11
11
  /** @import Compilation from "../Compilation" */
12
12
 
@@ -47,16 +47,13 @@ class StartupAssetHintRuntimeModule extends RuntimeModule {
47
47
  const compilation = /** @type {Compilation} */ (this.compilation);
48
48
  const lines = this._lines;
49
49
  if (lines.length === 0) return null;
50
- // `__webpack_nonce__` set inside the entry module is too late — the
51
- // entry hasn't run yet. Read the nonce off the `<script>` tag that
52
- // loaded the bundle, so prefetch / preload links match a CSP that
53
- // demands the same nonce as the script.
54
- //
55
- // - For classic script output, `document.currentScript` is the
56
- // loading `<script>` element while the runtime executes.
57
- // - For ESM output (`output.module: true`), `document.currentScript`
58
- // is `null`; locate the loading `<script type="module">` by
59
- // matching `script.src` against `import.meta.url`.
50
+ // `__webpack_nonce__` set in the entry module comes too late, the entry not
51
+ // having run, so the nonce is read off the `<script>` that loaded the bundle
52
+ // and the links match a CSP demanding the script's own.
53
+
54
+ // Classic output finds it on `document.currentScript`. ESM output leaves that
55
+ // null, so the loading `<script type="module">` is found by matching its
56
+ // `src` against `import.meta.url`.
60
57
  const { module: isModule, importMetaName } = compilation.outputOptions;
61
58
  const nonceSetup = isModule
62
59
  ? [
@@ -10,8 +10,9 @@ const getUnsupportedFeatureWarning = memoize(() =>
10
10
  require("../errors/UnsupportedFeatureWarning")
11
11
  );
12
12
 
13
- /** @import { DependencyLocation } from "../Dependency" */
14
- /** @import NormalModule from "../NormalModule" */
13
+ /** @import { DependencyLocation } from "../graph/Dependency" */
14
+ /** @import NormalModule from "../module/NormalModule" */
15
+ /** @import { MagicCommentOptions } from "../util/magicComment" */
15
16
 
16
17
  /**
17
18
  * @typedef {object} ResourceHintOptions
@@ -27,7 +28,7 @@ const getUnsupportedFeatureWarning = memoize(() =>
27
28
  * Reads `webpackPrefetch` / `webpackPreload` / `webpackFetchPriority` /
28
29
  * `webpackAs` / `webpackType` / `webpackMedia` from a parsed magic-comment
29
30
  * options object. Invalid values emit warnings to the given module.
30
- * @param {Record<string, EXPECTED_ANY> | null | undefined} importOptions parsed comment options
31
+ * @param {MagicCommentOptions | null | undefined} importOptions parsed comment options
31
32
  * @param {NormalModule} module the module to attach warnings to
32
33
  * @param {DependencyLocation} loc location for warnings
33
34
  * @returns {ResourceHintOptions} parsed hints (empty when no comments matched)
@@ -5,18 +5,18 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const ConstDependency = require("../dependencies/core/ConstDependency");
9
+ const { approve } = require("../javascript/JavascriptParserHelpers");
8
10
  const {
9
11
  JAVASCRIPT_MODULE_TYPE_AUTO,
10
12
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
13
  JAVASCRIPT_MODULE_TYPE_ESM
12
- } = require("./ModuleTypeConstants");
13
- const ConstDependency = require("./dependencies/ConstDependency");
14
- const ProvidedDependency = require("./dependencies/ProvidedDependency");
15
- const { approve } = require("./javascript/JavascriptParserHelpers");
14
+ } = require("../module/ModuleTypeConstants");
15
+ const ProvidedDependency = require("./ProvidedDependency");
16
16
 
17
- /** @import { JavascriptParserOptions } from "../declarations/WebpackOptions" */
18
- /** @import Compiler from "./Compiler" */
19
- /** @import JavascriptParser, { Range } from "./javascript/JavascriptParser" */
17
+ /** @import { JavascriptParserOptions } from "../../declarations/WebpackOptions" */
18
+ /** @import Compiler from "../Compiler" */
19
+ /** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
20
20
 
21
21
  const PLUGIN_NAME = "ProvidePlugin";
22
22
 
@@ -5,13 +5,13 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const Dependency = require("../Dependency");
9
- const InitFragment = require("../InitFragment");
10
- const Template = require("../Template");
11
- const { InlinedUsedName } = require("../optimize/InlineExports");
8
+ const ModuleDependency = require("../dependencies/core/ModuleDependency");
9
+ const Dependency = require("../graph/Dependency");
10
+ const { isInlinedUsedName } = require("../optimize/InlineExports");
11
+ const InitFragment = require("../template/InitFragment");
12
+ const Template = require("../template/Template");
12
13
  const makeSerializable = require("../util/makeSerializable");
13
14
  const { propertyAccess } = require("../util/property");
14
- const ModuleDependency = require("./ModuleDependency");
15
15
 
16
16
  /** @import { ReplaceSource } from "webpack-sources" */
17
17
  /**
@@ -19,11 +19,11 @@ const ModuleDependency = require("./ModuleDependency");
19
19
  * ReferencedExports,
20
20
  * UpdateHashContext,
21
21
  * ExportInfoName
22
- * } from "../Dependency"
22
+ * } from "../graph/Dependency"
23
23
  */
24
- /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
25
- /** @import ModuleGraph from "../ModuleGraph" */
26
- /** @import ModuleGraphConnection from "../ModuleGraphConnection" */
24
+ /** @import { DependencyTemplateContext } from "../template/DependencyTemplate" */
25
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
26
+ /** @import ModuleGraphConnection from "../graph/ModuleGraphConnection" */
27
27
  /** @import { Range } from "../javascript/JavascriptParser" */
28
28
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExportInfoName[]]>} ObjectDeserializerContext */
29
29
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExportInfoName[]]>} ObjectSerializerContext */
@@ -103,10 +103,11 @@ class ProvidedDependency extends ModuleDependency {
103
103
  }
104
104
  }
105
105
 
106
- makeSerializable(
107
- ProvidedDependency,
106
+ makeSerializable(ProvidedDependency, [
107
+ "webpack/lib/provide/ProvidedDependency",
108
+ // TODO in the next major release: remove, they restore pre-move cache packs
108
109
  "webpack/lib/dependencies/ProvidedDependency"
109
- );
110
+ ]);
110
111
 
111
112
  class ProvidedDependencyTemplate extends ModuleDependency.Template {
112
113
  /**
@@ -144,7 +145,7 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template {
144
145
 
145
146
  const provided = !usedName
146
147
  ? moduleRaw
147
- : usedName instanceof InlinedUsedName
148
+ : isInlinedUsedName(usedName)
148
149
  ? `(${moduleRaw}, ${usedName.render(
149
150
  Template.toNormalComment(
150
151
  `inlined export ${propertyAccess(dep.ids)}`
@@ -5,19 +5,36 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const RawModule = require("./RawModule");
9
- const EntryDependency = require("./dependencies/EntryDependency");
8
+ const isDependencyKind = require("../graph/isDependencyKind");
9
+ const RawModule = require("../module/RawModule");
10
+
11
+ /** @import Compiler from "../Compiler" */
12
+ /** @import { ResolveData } from "../module/NormalModuleFactory" */
13
+ /** @import { BeforeContextResolveData } from "../context/ContextModuleFactory" */
10
14
 
11
15
  /**
12
- * @import {
13
- * IgnorePluginOptions
14
- * } from "../declarations/plugins/IgnorePlugin"
16
+ * @inline
17
+ * @tsType import('./IgnorePlugin').CheckResourceFn
18
+ * @typedef {(resource: string, context: string) => boolean} CheckResourceFn
15
19
  */
16
- /** @import Compiler from "./Compiler" */
17
- /** @import { ResolveData } from "./NormalModuleFactory" */
18
- /** @import { BeforeContextResolveData } from "./ContextModuleFactory" */
19
20
 
20
- /** @typedef {(resource: string, context: string) => boolean} CheckResourceFn */
21
+ /**
22
+ * @inline
23
+ * @typedef {object} IgnorePluginPatternOptions
24
+ * @property {RegExp=} contextRegExp A RegExp to test the context (directory) against.
25
+ * @property {RegExp} resourceRegExp A RegExp to test the request against.
26
+ */
27
+
28
+ /**
29
+ * @inline
30
+ * @typedef {object} IgnorePluginCheckOptions
31
+ * @property {CheckResourceFn} checkResource A filter function for resource and context.
32
+ */
33
+
34
+ /**
35
+ * @schema plugins/IgnorePlugin
36
+ * @typedef {IgnorePluginPatternOptions | IgnorePluginCheckOptions} IgnorePluginOptions
37
+ */
21
38
 
22
39
  const PLUGIN_NAME = "IgnorePlugin";
23
40
 
@@ -71,14 +88,14 @@ class IgnorePlugin {
71
88
  apply(compiler) {
72
89
  compiler.hooks.validate.tap(PLUGIN_NAME, () => {
73
90
  compiler.validate(
74
- /** @type {EXPECTED_ANY} */
75
- (require("../schemas/plugins/IgnorePlugin.json")),
91
+ require("../../schemas/plugins/IgnorePlugin.json"),
76
92
  this.options,
77
93
  {
78
94
  name: "Ignore Plugin",
79
95
  baseDataPath: "options"
80
96
  },
81
- (options) => require("../schemas/plugins/IgnorePlugin.check")(options)
97
+ (options) =>
98
+ require("../../schemas/plugins/IgnorePlugin.check")(options)
82
99
  );
83
100
  });
84
101
 
@@ -89,7 +106,7 @@ class IgnorePlugin {
89
106
  if (
90
107
  result === false &&
91
108
  resolveData.dependencies.length > 0 &&
92
- resolveData.dependencies[0] instanceof EntryDependency
109
+ isDependencyKind(resolveData.dependencies[0], "entry")
93
110
  ) {
94
111
  const module = new RawModule(
95
112
  "",