@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -5,7 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { getContext } = require("loader-runner");
9
8
  const asyncLib = require("neo-async");
10
9
  const {
11
10
  AsyncSeriesBailHook,
@@ -21,6 +20,7 @@ const ModuleGraph = require("./ModuleGraph");
21
20
  const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
22
21
  const NormalModule = require("./NormalModule");
23
22
  const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
23
+ const { getContext } = require("./loaders/LoaderRunner");
24
24
  const BasicEffectRulePlugin = require("./rules/BasicEffectRulePlugin");
25
25
  const BasicMatcherRulePlugin = require("./rules/BasicMatcherRulePlugin");
26
26
  const ObjectMatcherRulePlugin = require("./rules/ObjectMatcherRulePlugin");
@@ -31,6 +31,7 @@ const { getScheme } = require("./util/URLAbsoluteSpecifier");
31
31
  const { cachedCleverMerge, cachedSetProperty } = require("./util/cleverMerge");
32
32
  const { join } = require("./util/fs");
33
33
  const {
34
+ escapeHashInPathRequest,
34
35
  parseResource,
35
36
  parseResourceWithoutFragment
36
37
  } = require("./util/identifier");
@@ -62,14 +63,16 @@ const {
62
63
  /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
63
64
 
64
65
  /**
66
+ * Defines the callback type used by this module.
65
67
  * @template T
66
68
  * @typedef {import("./Compiler").Callback<T>} Callback
67
69
  */
68
70
 
69
71
  /** @typedef {Pick<RuleSetRule, "type" | "sideEffects" | "parser" | "generator" | "resolve" | "layer" | "extractSourceMap">} ModuleSettings */
70
- /** @typedef {Partial<NormalModuleCreateData & { settings: ModuleSettings }>} CreateData */
72
+ /** @typedef {NormalModuleCreateData & { settings: ModuleSettings }} CreateData */
71
73
 
72
74
  /**
75
+ * Defines the resolve data type used by this module.
73
76
  * @typedef {object} ResolveData
74
77
  * @property {ModuleFactoryCreateData["contextInfo"]} contextInfo
75
78
  * @property {ModuleFactoryCreateData["resolveOptions"]} resolveOptions
@@ -79,7 +82,7 @@ const {
79
82
  * @property {ImportAttributes=} attributes
80
83
  * @property {ModuleDependency[]} dependencies
81
84
  * @property {string} dependencyType
82
- * @property {CreateData} createData
85
+ * @property {Partial<CreateData>} createData
83
86
  * @property {FileSystemDependencies} fileDependencies
84
87
  * @property {FileSystemDependencies} missingDependencies
85
88
  * @property {FileSystemDependencies} contextDependencies
@@ -88,6 +91,7 @@ const {
88
91
  */
89
92
 
90
93
  /**
94
+ * Defines the resource data type used by this module.
91
95
  * @typedef {object} ResourceData
92
96
  * @property {string} resource
93
97
  * @property {string=} path
@@ -97,6 +101,7 @@ const {
97
101
  */
98
102
 
99
103
  /**
104
+ * Defines the resource scheme data type used by this module.
100
105
  * @typedef {object} ResourceSchemeData
101
106
  * @property {string=} mimetype mime type of the resource
102
107
  * @property {string=} parameters additional parameters for the resource
@@ -107,11 +112,25 @@ const {
107
112
  /** @typedef {ResourceData & { data: ResourceSchemeData & Partial<ResolveRequest> }} ResourceDataWithData */
108
113
 
109
114
  /**
115
+ * Defines the parsed loader request type used by this module.
110
116
  * @typedef {object} ParsedLoaderRequest
111
117
  * @property {string} loader loader
112
118
  * @property {string | undefined} options options
113
119
  */
114
120
 
121
+ /**
122
+ * Dependencies captured while resolving a loader.
123
+ * @typedef {object} ResolveDependencies
124
+ * @property {LazySet<string>} fileDependencies file dependencies of the resolve
125
+ * @property {LazySet<string>} contextDependencies context dependencies of the resolve
126
+ * @property {LazySet<string>} missingDependencies missing dependencies of the resolve
127
+ */
128
+
129
+ /**
130
+ * Memoized result of resolving a loader for a given (context, request).
131
+ * @typedef {ResolveDependencies & { loader: string, query: string | undefined, type: string | undefined }} LoaderResolveCacheEntry
132
+ */
133
+
115
134
  /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_AUTO} JAVASCRIPT_MODULE_TYPE_AUTO */
116
135
  /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_DYNAMIC} JAVASCRIPT_MODULE_TYPE_DYNAMIC */
117
136
  /** @typedef {import("./ModuleTypeConstants").JAVASCRIPT_MODULE_TYPE_ESM} JAVASCRIPT_MODULE_TYPE_ESM */
@@ -127,8 +146,9 @@ const {
127
146
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_GLOBAL} CSS_MODULE_TYPE_GLOBAL */
128
147
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_MODULE} CSS_MODULE_TYPE_MODULE */
129
148
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_AUTO} CSS_MODULE_TYPE_AUTO */
149
+ /** @typedef {import("./ModuleTypeConstants").HTML_MODULE_TYPE} HTML_MODULE_TYPE */
130
150
 
131
- /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO} KnownNormalModuleTypes */
151
+ /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO | HTML_MODULE_TYPE} KnownNormalModuleTypes */
132
152
  /** @typedef {KnownNormalModuleTypes | string} NormalModuleTypes */
133
153
 
134
154
  const EMPTY_RESOLVE_OPTIONS = {};
@@ -143,6 +163,26 @@ const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
143
163
  const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
144
164
 
145
165
  /**
166
+ * Replays the file/context/missing dependencies captured by a loader resolve
167
+ * into a resolve context, so memoized loaders still record everything needed
168
+ * for watch invalidation.
169
+ * @param {ResolveContext} resolveContext resolve context to add dependencies to
170
+ * @param {ResolveDependencies} source captured resolve dependencies
171
+ * @returns {void}
172
+ */
173
+ const replayResolveDependencies = (resolveContext, source) => {
174
+ // On this path resolveContext always carries the three LazySet dependency
175
+ // sets built in the `resolve` hook, so they are safe to treat as LazySet.
176
+ /** @type {LazySet<string>} */
177
+ (resolveContext.fileDependencies).addAll(source.fileDependencies);
178
+ /** @type {LazySet<string>} */
179
+ (resolveContext.contextDependencies).addAll(source.contextDependencies);
180
+ /** @type {LazySet<string>} */
181
+ (resolveContext.missingDependencies).addAll(source.missingDependencies);
182
+ };
183
+
184
+ /**
185
+ * Returns ident.
146
186
  * @param {LoaderItem} data data
147
187
  * @returns {string} ident
148
188
  */
@@ -163,6 +203,7 @@ const loaderToIdent = (data) => {
163
203
  };
164
204
 
165
205
  /**
206
+ * Stringify loaders and resource.
166
207
  * @param {LoaderItem[]} loaders loaders
167
208
  * @param {string} resource resource
168
209
  * @returns {string} stringified loaders and resource
@@ -176,6 +217,7 @@ const stringifyLoadersAndResource = (loaders, resource) => {
176
217
  };
177
218
 
178
219
  /**
220
+ * Checks whether it needs calls.
179
221
  * @param {number} times times
180
222
  * @param {(err?: null | Error) => void} callback callback
181
223
  * @returns {(err?: null | Error) => void} callback
@@ -191,6 +233,7 @@ const needCalls = (times, callback) => (err) => {
191
233
  };
192
234
 
193
235
  /**
236
+ * Merges global options.
194
237
  * @template T
195
238
  * @template O
196
239
  * @param {T} globalOptions global options
@@ -221,6 +264,7 @@ const mergeGlobalOptions = (globalOptions, type, localOptions) => {
221
264
 
222
265
  // TODO webpack 6 remove
223
266
  /**
267
+ * Deprecation changed hook message.
224
268
  * @template {import("tapable").Hook<EXPECTED_ANY, EXPECTED_ANY>} T
225
269
  * @param {string} name name
226
270
  * @param {T} hook hook
@@ -309,8 +353,14 @@ const ruleSetCompiler = new RuleSetCompiler([
309
353
  /** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
310
354
  /** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
311
355
 
356
+ /** @typedef {import("./html/HtmlParser")} HtmlParser */
357
+ /** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} HtmlParserOptions */
358
+ /** @typedef {import("./html/HtmlGenerator")} HtmlGenerator */
359
+ /** @typedef {import("../declarations/WebpackOptions").HtmlGeneratorOptions} HtmlGeneratorOptions */
360
+
312
361
  /* eslint-disable jsdoc/type-formatting */
313
362
  /**
363
+ * Defines the shared type used by this module.
314
364
  * @typedef {[
315
365
  * [JAVASCRIPT_MODULE_TYPE_AUTO, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
316
366
  * [JAVASCRIPT_MODULE_TYPE_DYNAMIC, JavascriptParser, JavascriptParserOptions, JavascriptGenerator, EmptyGeneratorOptions],
@@ -321,32 +371,48 @@ const ruleSetCompiler = new RuleSetCompiler([
321
371
  * [ASSET_MODULE_TYPE_RESOURCE, AssetParser, EmptyParserOptions, AssetGenerator, AssetGeneratorOptions],
322
372
  * [ASSET_MODULE_TYPE_SOURCE, AssetSourceParser, EmptyParserOptions, AssetSourceGenerator, EmptyGeneratorOptions],
323
373
  * [ASSET_MODULE_TYPE_BYTES, AssetBytesParser, EmptyParserOptions, AssetBytesGenerator, EmptyGeneratorOptions],
324
- * [WEBASSEMBLY_MODULE_TYPE_ASYNC, AsyncWebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
325
- * [WEBASSEMBLY_MODULE_TYPE_SYNC, WebAssemblyParser, EmptyParserOptions, Generator, EmptyParserOptions],
374
+ * [WEBASSEMBLY_MODULE_TYPE_ASYNC, AsyncWebAssemblyParser, EmptyParserOptions, Generator, EmptyGeneratorOptions],
375
+ * [WEBASSEMBLY_MODULE_TYPE_SYNC, WebAssemblyParser, EmptyParserOptions, Generator, EmptyGeneratorOptions],
326
376
  * [CSS_MODULE_TYPE, CssParser, CssParserOptions, CssGenerator, CssGeneratorOptions],
327
377
  * [CSS_MODULE_TYPE_AUTO, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
328
378
  * [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
329
379
  * [CSS_MODULE_TYPE_GLOBAL, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
380
+ * [HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions],
330
381
  * [string, Parser, ParserOptions, Generator, GeneratorOptions],
331
382
  * ]} ParsersAndGeneratorsByTypes
332
383
  */
333
384
  /* eslint-enable jsdoc/type-formatting */
334
385
 
335
386
  /**
387
+ * Defines the extract tuple elements type used by this module.
336
388
  * @template {unknown[]} T
337
389
  * @template {number[]} I
338
390
  * @typedef {{ [K in keyof I]: K extends keyof I ? I[K] extends keyof T ? T[I[K]] : never : never }} ExtractTupleElements
339
391
  */
340
392
 
341
393
  /**
394
+ * Represents the normal module factory runtime component.
342
395
  * @template {unknown[]} T
343
396
  * @template {number[]} A
344
397
  * @template [R=void]
345
398
  * @typedef {T extends [infer Head extends [string, ...unknown[]], ...infer Tail extends [string, ...unknown[]][]] ? Record<Head[0], SyncBailHook<ExtractTupleElements<Head, A>, R extends number ? Head[R] : R>> & RecordFactoryFromTuple<Tail, A, R> : unknown } RecordFactoryFromTuple
346
399
  */
347
400
 
401
+ /**
402
+ * Maps each tuple in `T` to a record from its `[0]` key to its `[I]` value.
403
+ * @template {unknown[]} T
404
+ * @template {number} I
405
+ * @typedef {T extends [infer Head extends [string, ...unknown[]], ...infer Tail extends [string, ...unknown[]][]] ? Record<Head[0], I extends keyof Head ? Head[I] : never> & TupleToTypeMap<Tail, I> : unknown } TupleToTypeMap
406
+ */
407
+
408
+ /** @typedef {TupleToTypeMap<ParsersAndGeneratorsByTypes, 1>} ParserByType */
409
+ /** @typedef {TupleToTypeMap<ParsersAndGeneratorsByTypes, 2>} ParserOptionsByType */
410
+ /** @typedef {TupleToTypeMap<ParsersAndGeneratorsByTypes, 3>} GeneratorByType */
411
+ /** @typedef {TupleToTypeMap<ParsersAndGeneratorsByTypes, 4>} GeneratorOptionsByType */
412
+
348
413
  class NormalModuleFactory extends ModuleFactory {
349
414
  /**
415
+ * Creates an instance of NormalModuleFactory.
350
416
  * @param {object} param params
351
417
  * @param {string=} param.context context
352
418
  * @param {InputFileSystem} param.fs file system
@@ -369,7 +435,10 @@ class NormalModuleFactory extends ModuleFactory {
369
435
  resolveForScheme: new HookMap(
370
436
  () => new AsyncSeriesBailHook(["resourceData", "resolveData"])
371
437
  ),
372
- /** @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>} */
438
+ /**
439
+ * @type {HookMap<AsyncSeriesBailHook<[ResourceDataWithData, ResolveData], true | void>>}
440
+ * @since 5.49.0
441
+ */
373
442
  resolveInScheme: new HookMap(
374
443
  () => new AsyncSeriesBailHook(["resourceData", "resolveData"])
375
444
  ),
@@ -395,7 +464,10 @@ class NormalModuleFactory extends ModuleFactory {
395
464
  generator: new HookMap(
396
465
  () => new SyncHook(["generator", "generatorOptions"])
397
466
  ),
398
- /** @type {HookMap<SyncBailHook<[CreateData, ResolveData], Module | void>>} */
467
+ /**
468
+ * @type {HookMap<SyncBailHook<[CreateData, ResolveData], Module | void>>}
469
+ * @since 5.81.0
470
+ */
399
471
  createModuleClass: new HookMap(
400
472
  () => new SyncBailHook(["createData", "resolveData"])
401
473
  )
@@ -423,6 +495,8 @@ class NormalModuleFactory extends ModuleFactory {
423
495
  this.generatorCache = new Map();
424
496
  /** @type {Set<Module>} */
425
497
  this._restoredUnsafeCacheEntries = new Set();
498
+ /** @type {Map<string, LoaderResolveCacheEntry>} */
499
+ this._loaderResolveCache = new Map();
426
500
 
427
501
  /** @type {(resource: string) => import("./util/identifier").ParsedResource} */
428
502
  const cacheParseResource = parseResource.bindCache(
@@ -471,7 +545,9 @@ class NormalModuleFactory extends ModuleFactory {
471
545
  // Ignored
472
546
  if (result === false) return callback();
473
547
 
474
- const createData = resolveData.createData;
548
+ const createData =
549
+ /** @type {CreateData} */
550
+ (resolveData.createData);
475
551
 
476
552
  this.hooks.createModule.callAsync(
477
553
  createData,
@@ -484,18 +560,12 @@ class NormalModuleFactory extends ModuleFactory {
484
560
 
485
561
  // TODO webpack 6 make it required and move javascript/wasm/asset properties to own module
486
562
  createdModule = this.hooks.createModuleClass
487
- .for(
488
- /** @type {ModuleSettings} */
489
- (createData.settings).type
490
- )
563
+ .for(createData.settings.type)
491
564
  .call(createData, resolveData);
492
565
 
493
566
  if (!createdModule) {
494
567
  createdModule = /** @type {Module} */ (
495
- new NormalModule(
496
- /** @type {NormalModuleCreateData} */
497
- (createData)
498
- )
568
+ new NormalModule(createData)
499
569
  );
500
570
  }
501
571
  }
@@ -868,6 +938,7 @@ class NormalModuleFactory extends ModuleFactory {
868
938
  );
869
939
 
870
940
  /**
941
+ * Processes the provided string.
871
942
  * @param {string} context context
872
943
  */
873
944
  const defaultResolve = (context) => {
@@ -895,7 +966,7 @@ class NormalModuleFactory extends ModuleFactory {
895
966
  this.resolveResource(
896
967
  contextInfo,
897
968
  context,
898
- unresolvedResource,
969
+ escapeHashInPathRequest(unresolvedResource),
899
970
  normalResolver,
900
971
  resolveContext,
901
972
  (err, _resolvedResource, resolvedResourceResolveData) => {
@@ -972,6 +1043,7 @@ class NormalModuleFactory extends ModuleFactory {
972
1043
  }
973
1044
 
974
1045
  /**
1046
+ * Processes the provided data.
975
1047
  * @param {ModuleFactoryCreateData} data data object
976
1048
  * @param {ModuleFactoryCallback} callback callback
977
1049
  * @returns {void}
@@ -1080,6 +1152,7 @@ class NormalModuleFactory extends ModuleFactory {
1080
1152
  }
1081
1153
 
1082
1154
  /**
1155
+ * Processes the provided context info.
1083
1156
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1084
1157
  * @param {string} context context
1085
1158
  * @param {string} unresolvedResource unresolved resource
@@ -1152,6 +1225,7 @@ ${hints.join("\n\n")}`;
1152
1225
  }
1153
1226
 
1154
1227
  /**
1228
+ * Resolve resource error hints.
1155
1229
  * @param {Error} error error
1156
1230
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1157
1231
  * @param {string} context context
@@ -1277,6 +1351,7 @@ If changing the source code is not an option there is also a resolve options cal
1277
1351
  }
1278
1352
 
1279
1353
  /**
1354
+ * Resolves request array.
1280
1355
  * @param {ModuleFactoryCreateDataContextInfo} contextInfo context info
1281
1356
  * @param {string} context context
1282
1357
  * @param {LoaderItem[]} array array
@@ -1298,16 +1373,47 @@ If changing the source code is not an option there is also a resolve options cal
1298
1373
  asyncLib.map(
1299
1374
  array,
1300
1375
  /**
1376
+ * Handles the callback logic for this hook.
1301
1377
  * @param {LoaderItem} item item
1302
1378
  * @param {Callback<LoaderItem>} callback callback
1379
+ * @returns {void}
1303
1380
  */
1304
1381
  (item, callback) => {
1382
+ // Loaders resolve identically for a given (context, request), so memoize
1383
+ // the result and the resolve's dependencies to skip repeated resolves.
1384
+ const cacheKey = `${context}\n${item.loader}`;
1385
+ const cached = this._loaderResolveCache.get(cacheKey);
1386
+ if (cached !== undefined) {
1387
+ replayResolveDependencies(resolveContext, cached);
1388
+ return callback(null, {
1389
+ loader: cached.loader,
1390
+ type: cached.type,
1391
+ options:
1392
+ item.options === undefined
1393
+ ? cached.query
1394
+ ? cached.query.slice(1)
1395
+ : undefined
1396
+ : item.options,
1397
+ ident: item.options === undefined ? undefined : item.ident
1398
+ });
1399
+ }
1400
+ // Capture this resolve's dependencies in dedicated sets so a future hit
1401
+ // can replay them; also feed them back into the caller's resolveContext.
1402
+ const captureContext = {
1403
+ ...resolveContext,
1404
+ fileDependencies: new LazySet(),
1405
+ contextDependencies: new LazySet(),
1406
+ missingDependencies: new LazySet()
1407
+ };
1305
1408
  resolver.resolve(
1306
1409
  contextInfo,
1307
1410
  context,
1308
1411
  item.loader,
1309
- resolveContext,
1412
+ captureContext,
1310
1413
  (err, result, resolveRequest) => {
1414
+ // Merge the captured dependencies back so a failed or successful
1415
+ // resolve records them for watch invalidation just like before.
1416
+ replayResolveDependencies(resolveContext, captureContext);
1311
1417
  if (
1312
1418
  err &&
1313
1419
  /^[^/]*$/.test(item.loader) &&
@@ -1349,6 +1455,16 @@ If changing the source code is not an option there is also a resolve options cal
1349
1455
  /** @type {ResolveRequest} */
1350
1456
  (resolveRequest).descriptionFileData.type
1351
1457
  );
1458
+
1459
+ this._loaderResolveCache.set(cacheKey, {
1460
+ loader: parsedResult.path,
1461
+ query: parsedResult.query,
1462
+ type,
1463
+ fileDependencies: captureContext.fileDependencies,
1464
+ contextDependencies: captureContext.contextDependencies,
1465
+ missingDependencies: captureContext.missingDependencies
1466
+ });
1467
+
1352
1468
  /** @type {LoaderItem} */
1353
1469
  const resolved = {
1354
1470
  loader: parsedResult.path,
@@ -1376,9 +1492,11 @@ If changing the source code is not an option there is also a resolve options cal
1376
1492
  }
1377
1493
 
1378
1494
  /**
1379
- * @param {string} type type
1495
+ * Returns parser.
1496
+ * @template {string} T
1497
+ * @param {T} type type
1380
1498
  * @param {ParserOptions} parserOptions parser options
1381
- * @returns {Parser} parser
1499
+ * @returns {ParserByType[T]} parser
1382
1500
  */
1383
1501
  getParser(type, parserOptions = EMPTY_PARSER_OPTIONS) {
1384
1502
  let cache = this.parserCache.get(type);
@@ -1395,13 +1513,15 @@ If changing the source code is not an option there is also a resolve options cal
1395
1513
  cache.set(parserOptions, parser);
1396
1514
  }
1397
1515
 
1398
- return parser;
1516
+ return /** @type {ParserByType[T]} */ (parser);
1399
1517
  }
1400
1518
 
1401
1519
  /**
1402
- * @param {string} type type
1520
+ * Creates a parser from the provided type.
1521
+ * @template {string} T
1522
+ * @param {T} type type
1403
1523
  * @param {ParserOptions} parserOptions parser options
1404
- * @returns {Parser} parser
1524
+ * @returns {ParserByType[T]} parser
1405
1525
  */
1406
1526
  createParser(type, parserOptions = {}) {
1407
1527
  parserOptions = mergeGlobalOptions(
@@ -1414,13 +1534,15 @@ If changing the source code is not an option there is also a resolve options cal
1414
1534
  throw new Error(`No parser registered for ${type}`);
1415
1535
  }
1416
1536
  this.hooks.parser.for(type).call(parser, parserOptions);
1417
- return parser;
1537
+ return /** @type {ParserByType[T]} */ (parser);
1418
1538
  }
1419
1539
 
1420
1540
  /**
1421
- * @param {string} type type of generator
1541
+ * Returns generator.
1542
+ * @template {string} T
1543
+ * @param {T} type type of generator
1422
1544
  * @param {GeneratorOptions} generatorOptions generator options
1423
- * @returns {Generator} generator
1545
+ * @returns {GeneratorByType[T]} generator
1424
1546
  */
1425
1547
  getGenerator(type, generatorOptions = EMPTY_GENERATOR_OPTIONS) {
1426
1548
  let cache = this.generatorCache.get(type);
@@ -1437,13 +1559,15 @@ If changing the source code is not an option there is also a resolve options cal
1437
1559
  cache.set(generatorOptions, generator);
1438
1560
  }
1439
1561
 
1440
- return generator;
1562
+ return /** @type {GeneratorByType[T]} */ (generator);
1441
1563
  }
1442
1564
 
1443
1565
  /**
1444
- * @param {string} type type of generator
1566
+ * Creates a generator.
1567
+ * @template {string} T
1568
+ * @param {T} type type of generator
1445
1569
  * @param {GeneratorOptions} generatorOptions generator options
1446
- * @returns {Generator} generator
1570
+ * @returns {GeneratorByType[T]} generator
1447
1571
  */
1448
1572
  createGenerator(type, generatorOptions = {}) {
1449
1573
  generatorOptions = mergeGlobalOptions(
@@ -1458,10 +1582,11 @@ If changing the source code is not an option there is also a resolve options cal
1458
1582
  throw new Error(`No generator registered for ${type}`);
1459
1583
  }
1460
1584
  this.hooks.generator.for(type).call(generator, generatorOptions);
1461
- return generator;
1585
+ return /** @type {GeneratorByType[T]} */ (generator);
1462
1586
  }
1463
1587
 
1464
1588
  /**
1589
+ * Returns the resolver.
1465
1590
  * @param {Parameters<ResolverFactory["get"]>[0]} type type of resolver
1466
1591
  * @param {Parameters<ResolverFactory["get"]>[1]=} resolveOptions options
1467
1592
  * @returns {ReturnType<ResolverFactory["get"]>} the resolver
@@ -22,12 +22,14 @@ class NormalModuleReplacementPlugin {
22
22
  * @param {string | ModuleReplacer} newResource the resource replacement
23
23
  */
24
24
  constructor(resourceRegExp, newResource) {
25
+ /** @type {RegExp} */
25
26
  this.resourceRegExp = resourceRegExp;
27
+ /** @type {string | ModuleReplacer} */
26
28
  this.newResource = newResource;
27
29
  }
28
30
 
29
31
  /**
30
- * Apply the plugin
32
+ * Applies the plugin by registering its hooks on the compiler.
31
33
  * @param {Compiler} compiler the compiler instance
32
34
  * @returns {void}
33
35
  */
@@ -12,6 +12,7 @@ const ModuleFactory = require("./ModuleFactory");
12
12
 
13
13
  class NullFactory extends ModuleFactory {
14
14
  /**
15
+ * Processes the provided data.
15
16
  * @param {ModuleFactoryCreateData} data data object
16
17
  * @param {ModuleFactoryCallback} callback callback
17
18
  * @returns {void}
@@ -11,6 +11,7 @@
11
11
 
12
12
  class OptionsApply {
13
13
  /**
14
+ * Returns options object.
14
15
  * @param {WebpackOptions} options options object
15
16
  * @param {Compiler} compiler compiler object
16
17
  * @param {WebpackOptionsInterception=} interception intercepted options
package/lib/Parser.js CHANGED
@@ -12,6 +12,7 @@
12
12
  /** @typedef {Record<string, EXPECTED_ANY>} PreparsedAst */
13
13
 
14
14
  /**
15
+ * Defines the parser state base type used by this module.
15
16
  * @typedef {object} ParserStateBase
16
17
  * @property {string | Buffer} source
17
18
  * @property {NormalModule} current
@@ -25,13 +26,14 @@
25
26
  class Parser {
26
27
  /* istanbul ignore next */
27
28
  /**
29
+ * Parses the provided source and updates the parser state.
28
30
  * @abstract
29
31
  * @param {string | Buffer | PreparsedAst} source the source to parse
30
32
  * @param {ParserState} state the parser state
31
33
  * @returns {ParserState} the parser state
32
34
  */
33
35
  parse(source, state) {
34
- const AbstractMethodError = require("./AbstractMethodError");
36
+ const AbstractMethodError = require("./errors/AbstractMethodError");
35
37
 
36
38
  throw new AbstractMethodError();
37
39
  }
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "PlatformPlugin";
16
16
  */
17
17
  class PlatformPlugin {
18
18
  /**
19
+ * Creates an instance of PlatformPlugin.
19
20
  * @param {Partial<PlatformTargetProperties>} platform target properties
20
21
  */
21
22
  constructor(platform) {
@@ -24,7 +25,7 @@ class PlatformPlugin {
24
25
  }
25
26
 
26
27
  /**
27
- * Apply the plugin
28
+ * Applies the plugin by registering its hooks on the compiler.
28
29
  * @param {Compiler} compiler the compiler instance
29
30
  * @returns {void}
30
31
  */
@@ -13,12 +13,15 @@ const PLUGIN_NAME = "PrefetchPlugin";
13
13
 
14
14
  class PrefetchPlugin {
15
15
  /**
16
+ * Creates an instance of PrefetchPlugin.
16
17
  * @param {string} context context or request if context is not set
17
18
  * @param {string=} request request
18
19
  */
19
20
  constructor(context, request) {
20
21
  if (request) {
22
+ /** @type {string | null} */
21
23
  this.context = context;
24
+ /** @type {string} */
22
25
  this.request = request;
23
26
  } else {
24
27
  this.context = null;
@@ -27,7 +30,7 @@ class PrefetchPlugin {
27
30
  }
28
31
 
29
32
  /**
30
- * Apply the plugin
33
+ * Applies the plugin by registering its hooks on the compiler.
31
34
  * @param {Compiler} compiler the compiler instance
32
35
  * @returns {void}
33
36
  */