webpack 5.76.1 → 5.88.2

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (442) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +6 -1
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +18 -14
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +95 -47
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DependencyTemplates.js +1 -1
  38. package/lib/DllEntryPlugin.js +16 -1
  39. package/lib/DllModule.js +17 -2
  40. package/lib/DllModuleFactory.js +1 -1
  41. package/lib/DllReferencePlugin.js +13 -1
  42. package/lib/Entrypoint.js +1 -1
  43. package/lib/ErrorHelpers.js +62 -22
  44. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  45. package/lib/ExportsInfo.js +25 -4
  46. package/lib/ExportsInfoApiPlugin.js +30 -14
  47. package/lib/ExternalModule.js +30 -9
  48. package/lib/FileSystemInfo.js +61 -25
  49. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  50. package/lib/FlagDependencyExportsPlugin.js +336 -348
  51. package/lib/FlagDependencyUsagePlugin.js +9 -9
  52. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  53. package/lib/Generator.js +7 -0
  54. package/lib/HookWebpackError.js +1 -1
  55. package/lib/HotModuleReplacementPlugin.js +60 -46
  56. package/lib/IgnoreErrorModuleFactory.js +1 -1
  57. package/lib/InitFragment.js +28 -5
  58. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  59. package/lib/LibManifestPlugin.js +22 -5
  60. package/lib/LoaderOptionsPlugin.js +12 -2
  61. package/lib/MainTemplate.js +2 -2
  62. package/lib/Module.js +44 -12
  63. package/lib/ModuleBuildError.js +9 -0
  64. package/lib/ModuleDependencyError.js +4 -2
  65. package/lib/ModuleDependencyWarning.js +4 -2
  66. package/lib/ModuleError.js +9 -0
  67. package/lib/ModuleFactory.js +1 -1
  68. package/lib/ModuleFilenameHelpers.js +114 -4
  69. package/lib/ModuleGraph.js +33 -23
  70. package/lib/ModuleGraphConnection.js +19 -6
  71. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  72. package/lib/ModuleNotFoundError.js +5 -2
  73. package/lib/ModuleParseError.js +9 -0
  74. package/lib/ModuleProfile.js +1 -0
  75. package/lib/ModuleRestoreError.js +2 -0
  76. package/lib/ModuleStoreError.js +2 -1
  77. package/lib/ModuleTypeConstants.js +169 -0
  78. package/lib/ModuleWarning.js +9 -0
  79. package/lib/MultiWatching.js +4 -0
  80. package/lib/NodeStuffPlugin.js +65 -35
  81. package/lib/NormalModule.js +12 -2
  82. package/lib/NormalModuleFactory.js +56 -8
  83. package/lib/NormalModuleReplacementPlugin.js +5 -3
  84. package/lib/NullFactory.js +1 -1
  85. package/lib/PrefetchPlugin.js +4 -0
  86. package/lib/ProgressPlugin.js +71 -15
  87. package/lib/ProvidePlugin.js +30 -14
  88. package/lib/RawModule.js +13 -2
  89. package/lib/RecordIdsPlugin.js +4 -4
  90. package/lib/RequireJsStuffPlugin.js +22 -15
  91. package/lib/RuntimeGlobals.js +5 -0
  92. package/lib/RuntimeModule.js +12 -11
  93. package/lib/RuntimePlugin.js +10 -3
  94. package/lib/RuntimeTemplate.js +29 -11
  95. package/lib/SelfModuleFactory.js +12 -0
  96. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  97. package/lib/SourceMapDevToolPlugin.js +47 -11
  98. package/lib/Template.js +5 -3
  99. package/lib/UseStrictPlugin.js +29 -11
  100. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  101. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  102. package/lib/WatchIgnorePlugin.js +4 -0
  103. package/lib/Watching.js +62 -25
  104. package/lib/WebpackError.js +14 -5
  105. package/lib/WebpackIsIncludedPlugin.js +22 -13
  106. package/lib/WebpackOptionsApply.js +41 -44
  107. package/lib/WebpackOptionsDefaulter.js +10 -3
  108. package/lib/asset/AssetGenerator.js +24 -9
  109. package/lib/asset/AssetModulesPlugin.js +28 -12
  110. package/lib/asset/AssetParser.js +15 -7
  111. package/lib/asset/AssetSourceParser.js +8 -3
  112. package/lib/asset/RawDataUrlModule.js +15 -4
  113. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  114. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  115. package/lib/buildChunkGraph.js +37 -21
  116. package/lib/cache/IdleFileCachePlugin.js +2 -1
  117. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  118. package/lib/cache/PackFileCacheStrategy.js +59 -22
  119. package/lib/cache/ResolverCachePlugin.js +3 -0
  120. package/lib/config/browserslistTargetHandler.js +10 -10
  121. package/lib/config/defaults.js +306 -105
  122. package/lib/config/normalization.js +110 -71
  123. package/lib/config/target.js +37 -10
  124. package/lib/container/ContainerEntryModule.js +11 -1
  125. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  126. package/lib/container/ContainerExposedDependency.js +9 -0
  127. package/lib/container/ContainerPlugin.js +3 -1
  128. package/lib/container/FallbackDependency.js +13 -0
  129. package/lib/container/FallbackItemDependency.js +3 -0
  130. package/lib/container/FallbackModule.js +12 -2
  131. package/lib/container/FallbackModuleFactory.js +1 -1
  132. package/lib/container/RemoteModule.js +11 -1
  133. package/lib/container/RemoteRuntimeModule.js +3 -2
  134. package/lib/container/RemoteToExternalDependency.js +3 -0
  135. package/lib/css/CssExportsGenerator.js +9 -0
  136. package/lib/css/CssGenerator.js +5 -1
  137. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  138. package/lib/css/CssModulesPlugin.js +253 -74
  139. package/lib/css/CssParser.js +697 -282
  140. package/lib/css/walkCssTokens.js +269 -138
  141. package/lib/debug/ProfilingPlugin.js +33 -12
  142. package/lib/dependencies/AMDDefineDependency.js +54 -10
  143. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  144. package/lib/dependencies/AMDPlugin.js +33 -20
  145. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  146. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  147. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  148. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  149. package/lib/dependencies/AMDRequireDependency.js +16 -1
  150. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  151. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  152. package/lib/dependencies/CachedConstDependency.js +14 -0
  153. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  154. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  155. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  156. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  157. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  158. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  159. package/lib/dependencies/CommonJsPlugin.js +51 -26
  160. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  161. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  162. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  163. package/lib/dependencies/ConstDependency.js +11 -2
  164. package/lib/dependencies/ContextDependency.js +15 -2
  165. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  166. package/lib/dependencies/ContextElementDependency.js +8 -0
  167. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  168. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  169. package/lib/dependencies/CssExportDependency.js +8 -0
  170. package/lib/dependencies/CssImportDependency.js +55 -3
  171. package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
  172. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  173. package/lib/dependencies/CssUrlDependency.js +46 -16
  174. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  175. package/lib/dependencies/DllEntryDependency.js +14 -0
  176. package/lib/dependencies/DynamicExports.js +10 -6
  177. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  178. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  179. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  180. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  181. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  182. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  183. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  184. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  185. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  186. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  187. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  188. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  189. package/lib/dependencies/HarmonyExports.js +11 -5
  190. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  191. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  192. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  193. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  194. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  195. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  196. package/lib/dependencies/ImportContextDependency.js +15 -0
  197. package/lib/dependencies/ImportDependency.js +15 -4
  198. package/lib/dependencies/ImportEagerDependency.js +7 -4
  199. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  200. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  201. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  202. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  203. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  204. package/lib/dependencies/ImportParserPlugin.js +83 -25
  205. package/lib/dependencies/ImportPlugin.js +21 -7
  206. package/lib/dependencies/ImportWeakDependency.js +7 -4
  207. package/lib/dependencies/JsonExportsDependency.js +9 -1
  208. package/lib/dependencies/LocalModule.js +16 -0
  209. package/lib/dependencies/LocalModuleDependency.js +15 -0
  210. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  211. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  212. package/lib/dependencies/ModuleDependency.js +9 -1
  213. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  214. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  215. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  216. package/lib/dependencies/PrefetchDependency.js +3 -0
  217. package/lib/dependencies/ProvidedDependency.js +14 -2
  218. package/lib/dependencies/PureExpressionDependency.js +10 -1
  219. package/lib/dependencies/RequireContextDependency.js +6 -0
  220. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  221. package/lib/dependencies/RequireContextPlugin.js +19 -6
  222. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  223. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  224. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  225. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  226. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  227. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  228. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  229. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  230. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  231. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  232. package/lib/dependencies/RequireResolveDependency.js +6 -0
  233. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  234. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  235. package/lib/dependencies/StaticExportsDependency.js +8 -0
  236. package/lib/dependencies/SystemPlugin.js +48 -21
  237. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  238. package/lib/dependencies/URLDependency.js +13 -4
  239. package/lib/dependencies/URLPlugin.js +31 -18
  240. package/lib/dependencies/UnsupportedDependency.js +13 -0
  241. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  242. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  243. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  244. package/lib/dependencies/WorkerDependency.js +47 -3
  245. package/lib/dependencies/WorkerPlugin.js +105 -32
  246. package/lib/dependencies/getFunctionExpression.js +7 -0
  247. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  248. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  249. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  250. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  251. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  252. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  253. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  254. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  255. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  256. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  257. package/lib/ids/IdHelpers.js +6 -0
  258. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  259. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  260. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  261. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  262. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  263. package/lib/index.js +8 -0
  264. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  265. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  266. package/lib/javascript/ChunkHelpers.js +2 -2
  267. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  268. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  269. package/lib/javascript/JavascriptModulesPlugin.js +217 -198
  270. package/lib/javascript/JavascriptParser.js +941 -256
  271. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  272. package/lib/javascript/StartupHelpers.js +2 -2
  273. package/lib/json/JsonData.js +26 -1
  274. package/lib/json/JsonGenerator.js +21 -7
  275. package/lib/json/JsonModulesPlugin.js +14 -5
  276. package/lib/json/JsonParser.js +27 -13
  277. package/lib/library/AbstractLibraryPlugin.js +4 -0
  278. package/lib/library/AmdLibraryPlugin.js +22 -6
  279. package/lib/library/AssignLibraryPlugin.js +19 -5
  280. package/lib/library/EnableLibraryPlugin.js +4 -0
  281. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  282. package/lib/library/ModuleLibraryPlugin.js +8 -4
  283. package/lib/library/SystemLibraryPlugin.js +2 -1
  284. package/lib/library/UmdLibraryPlugin.js +24 -2
  285. package/lib/logging/runtime.js +1 -1
  286. package/lib/logging/truncateArgs.js +4 -0
  287. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  288. package/lib/node/NodeTargetPlugin.js +3 -0
  289. package/lib/node/NodeTemplatePlugin.js +10 -2
  290. package/lib/node/NodeWatchFileSystem.js +1 -1
  291. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  292. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  293. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  294. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  295. package/lib/node/nodeConsole.js +2 -4
  296. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  297. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  298. package/lib/optimize/ConcatenatedModule.js +8 -6
  299. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  300. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  301. package/lib/optimize/InnerGraph.js +5 -5
  302. package/lib/optimize/InnerGraphPlugin.js +57 -48
  303. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  304. package/lib/optimize/MangleExportsPlugin.js +1 -1
  305. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  306. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  307. package/lib/optimize/RealContentHashPlugin.js +86 -30
  308. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  309. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  310. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  311. package/lib/optimize/SplitChunksPlugin.js +71 -31
  312. package/lib/performance/SizeLimitsPlugin.js +7 -4
  313. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  314. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  315. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  316. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  317. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  318. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  319. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  320. package/lib/rules/RuleSetCompiler.js +3 -3
  321. package/lib/rules/UseEffectRulePlugin.js +6 -4
  322. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  323. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  324. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  325. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  326. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  327. package/lib/runtime/CompatRuntimeModule.js +7 -2
  328. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  329. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  330. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  331. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  332. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  333. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  334. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  335. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  336. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  337. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  338. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  339. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  340. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  341. package/lib/runtime/NonceRuntimeModule.js +1 -1
  342. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  343. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  344. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  345. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  346. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  347. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  348. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  349. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  350. package/lib/schemes/DataUriPlugin.js +16 -3
  351. package/lib/schemes/HttpUriPlugin.js +38 -0
  352. package/lib/serialization/ArraySerializer.js +22 -6
  353. package/lib/serialization/BinaryMiddleware.js +164 -1
  354. package/lib/serialization/DateObjectSerializer.js +15 -4
  355. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  356. package/lib/serialization/FileMiddleware.js +17 -0
  357. package/lib/serialization/MapObjectSerializer.js +24 -8
  358. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  359. package/lib/serialization/ObjectMiddleware.js +33 -2
  360. package/lib/serialization/PlainObjectSerializer.js +23 -12
  361. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  362. package/lib/serialization/SetObjectSerializer.js +21 -6
  363. package/lib/serialization/types.js +1 -1
  364. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  365. package/lib/sharing/ConsumeSharedModule.js +13 -2
  366. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  367. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  368. package/lib/sharing/ProvideSharedDependency.js +17 -0
  369. package/lib/sharing/ProvideSharedModule.js +11 -1
  370. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  371. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  372. package/lib/sharing/ShareRuntimeModule.js +19 -9
  373. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  374. package/lib/sharing/utils.js +320 -7
  375. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  376. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  377. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  378. package/lib/util/AsyncQueue.js +4 -2
  379. package/lib/util/LazySet.js +10 -2
  380. package/lib/util/MapHelpers.js +19 -5
  381. package/lib/util/ParallelismFactorCalculator.js +10 -0
  382. package/lib/util/Semaphore.js +1 -1
  383. package/lib/util/StackedCacheMap.js +7 -1
  384. package/lib/util/StringXor.js +51 -0
  385. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  386. package/lib/util/binarySearchBounds.js +49 -0
  387. package/lib/util/compileBooleanMatcher.js +31 -0
  388. package/lib/util/createHash.js +35 -13
  389. package/lib/util/deprecation.js +18 -3
  390. package/lib/util/deterministicGrouping.js +50 -11
  391. package/lib/util/findGraphRoots.js +4 -2
  392. package/lib/util/hash/md4.js +2 -2
  393. package/lib/util/hash/xxhash64.js +1 -1
  394. package/lib/util/identifier.js +4 -0
  395. package/lib/util/internalSerializables.js +1 -0
  396. package/lib/util/makeSerializable.js +7 -0
  397. package/lib/util/memoize.js +3 -3
  398. package/lib/util/numberHash.js +75 -21
  399. package/lib/util/processAsyncTree.js +7 -1
  400. package/lib/util/propertyAccess.js +9 -54
  401. package/lib/util/propertyName.js +79 -0
  402. package/lib/util/registerExternalSerializer.js +1 -1
  403. package/lib/util/runtime.js +84 -21
  404. package/lib/util/semver.js +2 -1
  405. package/lib/util/serialization.js +10 -0
  406. package/lib/util/smartGrouping.js +1 -1
  407. package/lib/validateSchema.js +6 -2
  408. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  409. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  410. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  411. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  412. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  413. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  414. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  415. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  416. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  417. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  418. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  419. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  420. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  421. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  422. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  423. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  424. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  425. package/lib/webpack.js +12 -3
  426. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  427. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  428. package/module.d.ts +55 -37
  429. package/package.json +59 -56
  430. package/schemas/WebpackOptions.check.js +1 -1
  431. package/schemas/WebpackOptions.json +133 -6
  432. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  433. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  434. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  435. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  436. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  437. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  438. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  439. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  440. package/schemas/plugins/css/CssParserOptions.json +1 -1
  441. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  442. package/types.d.ts +1629 -683
@@ -12,13 +12,16 @@ const ImportDependency = require("./ImportDependency");
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../Module")} Module */
16
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
15
17
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
19
 
17
20
  class ImportWeakDependency extends ImportDependency {
18
21
  /**
19
22
  * @param {string} request the request
20
- * @param {[number, number]} range expression range
21
- * @param {string[][]=} referencedExports list of referenced exports
23
+ * @param {Range} range expression range
24
+ * @param {(string[][] | null)=} referencedExports list of referenced exports
22
25
  */
23
26
  constructor(request, range, referencedExports) {
24
27
  super(request, range, referencedExports);
@@ -52,9 +55,9 @@ ImportWeakDependency.Template = class ImportDependencyTemplate extends (
52
55
  const dep = /** @type {ImportWeakDependency} */ (dependency);
53
56
  const content = runtimeTemplate.moduleNamespacePromise({
54
57
  chunkGraph,
55
- module: moduleGraph.getModule(dep),
58
+ module: /** @type {Module} */ (moduleGraph.getModule(dep)),
56
59
  request: dep.request,
57
- strict: module.buildMeta.strictHarmonyModule,
60
+ strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
58
61
  message: "import() weak",
59
62
  weak: true,
60
63
  runtimeRequirements
@@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
16
  /** @typedef {import("../json/JsonData")} JsonData */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
19
  /** @typedef {import("../util/Hash")} Hash */
18
20
 
19
21
  const getExportsFromData = data => {
@@ -45,7 +47,7 @@ const getExportsFromData = data => {
45
47
 
46
48
  class JsonExportsDependency extends NullDependency {
47
49
  /**
48
- * @param {JsonData=} data json data
50
+ * @param {JsonData} data json data
49
51
  */
50
52
  constructor(data) {
51
53
  super();
@@ -78,12 +80,18 @@ class JsonExportsDependency extends NullDependency {
78
80
  this.data.updateHash(hash);
79
81
  }
80
82
 
83
+ /**
84
+ * @param {ObjectSerializerContext} context context
85
+ */
81
86
  serialize(context) {
82
87
  const { write } = context;
83
88
  write(this.data);
84
89
  super.serialize(context);
85
90
  }
86
91
 
92
+ /**
93
+ * @param {ObjectDeserializerContext} context context
94
+ */
87
95
  deserialize(context) {
88
96
  const { read } = context;
89
97
  this.data = read();
@@ -7,7 +7,14 @@
7
7
 
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
11
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
12
+
10
13
  class LocalModule {
14
+ /**
15
+ * @param {string} name name
16
+ * @param {number} idx index
17
+ */
11
18
  constructor(name, idx) {
12
19
  this.name = name;
13
20
  this.idx = idx;
@@ -18,10 +25,16 @@ class LocalModule {
18
25
  this.used = true;
19
26
  }
20
27
 
28
+ /**
29
+ * @returns {string} variable name
30
+ */
21
31
  variableName() {
22
32
  return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
23
33
  }
24
34
 
35
+ /**
36
+ * @param {ObjectSerializerContext} context context
37
+ */
25
38
  serialize(context) {
26
39
  const { write } = context;
27
40
 
@@ -30,6 +43,9 @@ class LocalModule {
30
43
  write(this.used);
31
44
  }
32
45
 
46
+ /**
47
+ * @param {ObjectDeserializerContext} context context
48
+ */
33
49
  deserialize(context) {
34
50
  const { read } = context;
35
51
 
@@ -11,8 +11,17 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
+ /** @typedef {import("./LocalModule")} LocalModule */
14
18
 
15
19
  class LocalModuleDependency extends NullDependency {
20
+ /**
21
+ * @param {LocalModule} localModule local module
22
+ * @param {Range} range range
23
+ * @param {boolean} callNew true, when the local module should be called with new
24
+ */
16
25
  constructor(localModule, range, callNew) {
17
26
  super();
18
27
 
@@ -21,6 +30,9 @@ class LocalModuleDependency extends NullDependency {
21
30
  this.callNew = callNew;
22
31
  }
23
32
 
33
+ /**
34
+ * @param {ObjectSerializerContext} context context
35
+ */
24
36
  serialize(context) {
25
37
  const { write } = context;
26
38
 
@@ -31,6 +43,9 @@ class LocalModuleDependency extends NullDependency {
31
43
  super.serialize(context);
32
44
  }
33
45
 
46
+ /**
47
+ * @param {ObjectDeserializerContext} context context
48
+ */
34
49
  deserialize(context) {
35
50
  const { read } = context;
36
51
 
@@ -7,6 +7,13 @@
7
7
 
8
8
  const LocalModule = require("./LocalModule");
9
9
 
10
+ /** @typedef {import("../javascript/JavascriptParser").ParserState} ParserState */
11
+
12
+ /**
13
+ * @param {string} parent parent module
14
+ * @param {string} mod module to resolve
15
+ * @returns {string} resolved module
16
+ */
10
17
  const lookup = (parent, mod) => {
11
18
  if (mod.charAt(0) !== ".") return mod;
12
19
 
@@ -26,6 +33,11 @@ const lookup = (parent, mod) => {
26
33
  return path.join("/");
27
34
  };
28
35
 
36
+ /**
37
+ * @param {ParserState} state parser state
38
+ * @param {string} name name
39
+ * @returns {LocalModule} local module
40
+ */
29
41
  exports.addLocalModule = (state, name) => {
30
42
  if (!state.localModules) {
31
43
  state.localModules = [];
@@ -35,6 +47,12 @@ exports.addLocalModule = (state, name) => {
35
47
  return m;
36
48
  };
37
49
 
50
+ /**
51
+ * @param {ParserState} state parser state
52
+ * @param {string} name name
53
+ * @param {string} [namedModule] named module
54
+ * @returns {LocalModule | null} local module or null
55
+ */
38
56
  exports.getLocalModule = (state, name, namedModule) => {
39
57
  if (!state.localModules) return null;
40
58
  if (namedModule) {
@@ -18,6 +18,8 @@ const NullDependency = require("./NullDependency");
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
20
20
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
23
  /** @typedef {import("../util/Hash")} Hash */
22
24
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
25
 
@@ -76,6 +78,9 @@ class ModuleDecoratorDependency extends NullDependency {
76
78
  hash.update(this._hashUpdate);
77
79
  }
78
80
 
81
+ /**
82
+ * @param {ObjectSerializerContext} context context
83
+ */
79
84
  serialize(context) {
80
85
  const { write } = context;
81
86
  write(this.decorator);
@@ -83,6 +88,9 @@ class ModuleDecoratorDependency extends NullDependency {
83
88
  super.serialize(context);
84
89
  }
85
90
 
91
+ /**
92
+ * @param {ObjectDeserializerContext} context context
93
+ */
86
94
  deserialize(context) {
87
95
  const { read } = context;
88
96
  this.decorator = read();
@@ -11,6 +11,8 @@ const memoize = require("../util/memoize");
11
11
 
12
12
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
13
13
  /** @typedef {import("../Module")} Module */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
16
 
15
17
  const getRawModule = memoize(() => require("../RawModule"));
16
18
 
@@ -56,7 +58,7 @@ class ModuleDependency extends Dependency {
56
58
 
57
59
  /**
58
60
  * @param {string} context context directory
59
- * @returns {Module} a module
61
+ * @returns {Module | null} a module
60
62
  */
61
63
  createIgnoredModule(context) {
62
64
  const RawModule = getRawModule();
@@ -67,6 +69,9 @@ class ModuleDependency extends Dependency {
67
69
  );
68
70
  }
69
71
 
72
+ /**
73
+ * @param {ObjectSerializerContext} context context
74
+ */
70
75
  serialize(context) {
71
76
  const { write } = context;
72
77
  write(this.request);
@@ -76,6 +81,9 @@ class ModuleDependency extends Dependency {
76
81
  super.serialize(context);
77
82
  }
78
83
 
84
+ /**
85
+ * @param {ObjectDeserializerContext} context context
86
+ */
79
87
  deserialize(context) {
80
88
  const { read } = context;
81
89
  this.request = read();
@@ -10,6 +10,7 @@ const ModuleDependency = require("./ModuleDependency");
10
10
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
11
11
  /** @typedef {import("../Dependency")} Dependency */
12
12
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
13
+ /** @typedef {import("../Module")} Module */
13
14
 
14
15
  class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
15
16
  /**
@@ -22,7 +23,7 @@ class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
22
23
  const dep = /** @type {ModuleDependency} */ (dependency);
23
24
  if (!dep.range) return;
24
25
  const content = runtimeTemplate.moduleId({
25
- module: moduleGraph.getModule(dep),
26
+ module: /** @type {Module} */ (moduleGraph.getModule(dep)),
26
27
  chunkGraph,
27
28
  request: dep.request,
28
29
  weak: dep.weak
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotAcceptDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
  this.range = range;
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotDeclineDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
 
@@ -8,6 +8,9 @@
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
10
  class PrefetchDependency extends ModuleDependency {
11
+ /**
12
+ * @param {string} request the request string
13
+ */
11
14
  constructor(request) {
12
15
  super(request);
13
16
  }
@@ -17,7 +17,11 @@ const ModuleDependency = require("./ModuleDependency");
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
+ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
20
21
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
22
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
23
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
25
  /** @typedef {import("../util/Hash")} Hash */
22
26
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
27
 
@@ -35,7 +39,7 @@ class ProvidedDependency extends ModuleDependency {
35
39
  * @param {string} request request
36
40
  * @param {string} identifier identifier
37
41
  * @param {string[]} ids ids
38
- * @param {[number, number]} range range
42
+ * @param {Range} range range
39
43
  */
40
44
  constructor(request, identifier, ids, range) {
41
45
  super(request);
@@ -78,6 +82,9 @@ class ProvidedDependency extends ModuleDependency {
78
82
  hash.update(this._hashUpdate);
79
83
  }
80
84
 
85
+ /**
86
+ * @param {ObjectSerializerContext} context context
87
+ */
81
88
  serialize(context) {
82
89
  const { write } = context;
83
90
  write(this.identifier);
@@ -85,6 +92,9 @@ class ProvidedDependency extends ModuleDependency {
85
92
  super.serialize(context);
86
93
  }
87
94
 
95
+ /**
96
+ * @param {ObjectDeserializerContext} context context
97
+ */
88
98
  deserialize(context) {
89
99
  const { read } = context;
90
100
  this.identifier = read();
@@ -118,7 +128,9 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template {
118
128
  }
119
129
  ) {
120
130
  const dep = /** @type {ProvidedDependency} */ (dependency);
121
- const connection = moduleGraph.getConnection(dep);
131
+ const connection =
132
+ /** @type {ModuleGraphConnection} */
133
+ (moduleGraph.getConnection(dep));
122
134
  const exportsInfo = moduleGraph.getExportsInfo(connection.module);
123
135
  const usedName = exportsInfo.getUsedName(dep.ids, runtime);
124
136
  initFragments.push(
@@ -17,11 +17,14 @@ const NullDependency = require("./NullDependency");
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
19
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
23
  /** @typedef {import("../util/Hash")} Hash */
21
24
 
22
25
  class PureExpressionDependency extends NullDependency {
23
26
  /**
24
- * @param {[number, number]} range the source range
27
+ * @param {Range} range the source range
25
28
  */
26
29
  constructor(range) {
27
30
  super();
@@ -52,6 +55,9 @@ class PureExpressionDependency extends NullDependency {
52
55
  return false;
53
56
  }
54
57
 
58
+ /**
59
+ * @param {ObjectSerializerContext} context context
60
+ */
55
61
  serialize(context) {
56
62
  const { write } = context;
57
63
  write(this.range);
@@ -59,6 +65,9 @@ class PureExpressionDependency extends NullDependency {
59
65
  super.serialize(context);
60
66
  }
61
67
 
68
+ /**
69
+ * @param {ObjectDeserializerContext} context context
70
+ */
62
71
  deserialize(context) {
63
72
  const { read } = context;
64
73
  this.range = read();
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class RequireContextDependency extends ContextDependency {
15
+ /**
16
+ * @param {TODO} options options
17
+ * @param {Range} range range
18
+ */
13
19
  constructor(options, range) {
14
20
  super(options);
15
21
 
@@ -7,7 +7,15 @@
7
7
 
8
8
  const RequireContextDependency = require("./RequireContextDependency");
9
9
 
10
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
11
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
10
14
  module.exports = class RequireContextDependencyParserPlugin {
15
+ /**
16
+ * @param {JavascriptParser} parser the parser
17
+ * @returns {void}
18
+ */
11
19
  apply(parser) {
12
20
  parser.hooks.call
13
21
  .for("require.context")
@@ -19,19 +27,19 @@ module.exports = class RequireContextDependencyParserPlugin {
19
27
  case 4: {
20
28
  const modeExpr = parser.evaluateExpression(expr.arguments[3]);
21
29
  if (!modeExpr.isString()) return;
22
- mode = modeExpr.string;
30
+ mode = /** @type {string} */ (modeExpr.string);
23
31
  }
24
32
  // falls through
25
33
  case 3: {
26
34
  const regExpExpr = parser.evaluateExpression(expr.arguments[2]);
27
35
  if (!regExpExpr.isRegExp()) return;
28
- regExp = regExpExpr.regExp;
36
+ regExp = /** @type {RegExp} */ (regExpExpr.regExp);
29
37
  }
30
38
  // falls through
31
39
  case 2: {
32
40
  const recursiveExpr = parser.evaluateExpression(expr.arguments[1]);
33
41
  if (!recursiveExpr.isBoolean()) return;
34
- recursive = recursiveExpr.bool;
42
+ recursive = /** @type {boolean} */ (recursiveExpr.bool);
35
43
  }
36
44
  // falls through
37
45
  case 1: {
@@ -45,9 +53,9 @@ module.exports = class RequireContextDependencyParserPlugin {
45
53
  mode,
46
54
  category: "commonjs"
47
55
  },
48
- expr.range
56
+ /** @type {Range} */ (expr.range)
49
57
  );
50
- dep.loc = expr.loc;
58
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
51
59
  dep.optional = !!parser.scope.inTry;
52
60
  parser.state.current.addDependency(dep);
53
61
  return true;
@@ -5,17 +5,25 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC
11
+ } = require("../ModuleTypeConstants");
8
12
  const { cachedSetProperty } = require("../util/cleverMerge");
9
13
  const ContextElementDependency = require("./ContextElementDependency");
10
14
  const RequireContextDependency = require("./RequireContextDependency");
11
15
  const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
12
16
 
17
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
13
18
  /** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
14
19
  /** @typedef {import("../Compiler")} Compiler */
20
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
15
21
 
16
22
  /** @type {ResolveOptions} */
17
23
  const EMPTY_RESOLVE_OPTIONS = {};
18
24
 
25
+ const PLUGIN_NAME = "RequireContextPlugin";
26
+
19
27
  class RequireContextPlugin {
20
28
  /**
21
29
  * Apply the plugin
@@ -24,7 +32,7 @@ class RequireContextPlugin {
24
32
  */
25
33
  apply(compiler) {
26
34
  compiler.hooks.compilation.tap(
27
- "RequireContextPlugin",
35
+ PLUGIN_NAME,
28
36
  (compilation, { contextModuleFactory, normalModuleFactory }) => {
29
37
  compilation.dependencyFactories.set(
30
38
  RequireContextDependency,
@@ -40,6 +48,11 @@ class RequireContextPlugin {
40
48
  normalModuleFactory
41
49
  );
42
50
 
51
+ /**
52
+ * @param {Parser} parser parser parser
53
+ * @param {JavascriptParserOptions} parserOptions parserOptions
54
+ * @returns {void}
55
+ */
43
56
  const handler = (parser, parserOptions) => {
44
57
  if (
45
58
  parserOptions.requireContext !== undefined &&
@@ -51,14 +64,14 @@ class RequireContextPlugin {
51
64
  };
52
65
 
53
66
  normalModuleFactory.hooks.parser
54
- .for("javascript/auto")
55
- .tap("RequireContextPlugin", handler);
67
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
68
+ .tap(PLUGIN_NAME, handler);
56
69
  normalModuleFactory.hooks.parser
57
- .for("javascript/dynamic")
58
- .tap("RequireContextPlugin", handler);
70
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
71
+ .tap(PLUGIN_NAME, handler);
59
72
 
60
73
  contextModuleFactory.hooks.alternativeRequests.tap(
61
- "RequireContextPlugin",
74
+ PLUGIN_NAME,
62
75
  (items, options) => {
63
76
  if (items.length === 0) return items;
64
77
 
@@ -8,7 +8,14 @@
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
+ /** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
12
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
13
+
11
14
  class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock {
15
+ /**
16
+ * @param {ChunkGroupOptions & { entryOptions?: TODO }} chunkName chunk name
17
+ * @param {DependencyLocation} loc location info
18
+ */
12
19
  constructor(chunkName, loc) {
13
20
  super(chunkName, loc, null);
14
21
  }
@@ -10,6 +10,9 @@ const RequireEnsureDependency = require("./RequireEnsureDependency");
10
10
  const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
11
11
  const getFunctionExpression = require("./getFunctionExpression");
12
12
 
13
+ /** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
14
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
15
+
13
16
  module.exports = class RequireEnsureDependenciesBlockParserPlugin {
14
17
  apply(parser) {
15
18
  parser.hooks.call
@@ -57,7 +60,9 @@ module.exports = class RequireEnsureDependenciesBlockParserPlugin {
57
60
  }
58
61
 
59
62
  const depBlock = new RequireEnsureDependenciesBlock(
60
- chunkName,
63
+ /** @type {ChunkGroupOptions & { entryOptions?: TODO }} */ (
64
+ chunkName
65
+ ),
61
66
  expr.loc
62
67
  );
63
68
  const errorCallbackExists =
@@ -13,8 +13,16 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
14
14
  /** @typedef {import("../Dependency")} Dependency */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
19
 
17
20
  class RequireEnsureDependency extends NullDependency {
21
+ /**
22
+ * @param {Range} range range
23
+ * @param {Range} contentRange content range
24
+ * @param {Range} errorHandlerRange error handler range
25
+ */
18
26
  constructor(range, contentRange, errorHandlerRange) {
19
27
  super();
20
28
 
@@ -27,6 +35,9 @@ class RequireEnsureDependency extends NullDependency {
27
35
  return "require.ensure";
28
36
  }
29
37
 
38
+ /**
39
+ * @param {ObjectSerializerContext} context context
40
+ */
30
41
  serialize(context) {
31
42
  const { write } = context;
32
43
 
@@ -37,6 +48,9 @@ class RequireEnsureDependency extends NullDependency {
37
48
  super.serialize(context);
38
49
  }
39
50
 
51
+ /**
52
+ * @param {ObjectDeserializerContext} context context
53
+ */
40
54
  deserialize(context) {
41
55
  const { read } = context;
42
56
 
@@ -85,14 +99,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
85
99
  source.replace(
86
100
  contentRange[1],
87
101
  errorHandlerRange[0] - 1,
88
- ").bind(null, __webpack_require__))['catch']("
102
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](`
89
103
  );
90
104
  source.replace(errorHandlerRange[1], range[1] - 1, ")");
91
105
  } else {
92
106
  source.replace(
93
107
  contentRange[1],
94
108
  range[1] - 1,
95
- `).bind(null, __webpack_require__))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
109
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
96
110
  );
97
111
  }
98
112
  }
@@ -10,6 +10,9 @@ const ModuleDependency = require("./ModuleDependency");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
12
  class RequireEnsureItemDependency extends ModuleDependency {
13
+ /**
14
+ * @param {string} request the request string
15
+ */
13
16
  constructor(request) {
14
17
  super(request);
15
18
  }