webpack 5.59.0 → 5.94.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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -24,16 +24,34 @@ const RuntimeRequirementsDependency = require("./RuntimeRequirementsDependency")
24
24
  const CommonJsExportsParserPlugin = require("./CommonJsExportsParserPlugin");
25
25
  const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
26
26
 
27
+ const {
28
+ JAVASCRIPT_MODULE_TYPE_AUTO,
29
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC
30
+ } = require("../ModuleTypeConstants");
27
31
  const {
28
32
  evaluateToIdentifier,
29
33
  toConstantDependency
30
34
  } = require("../javascript/JavascriptParserHelpers");
31
35
  const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
32
36
 
37
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
38
+ /** @typedef {import("../Compilation")} Compilation */
39
+ /** @typedef {import("../Compiler")} Compiler */
40
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
41
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
42
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
43
+
44
+ const PLUGIN_NAME = "CommonJsPlugin";
45
+
33
46
  class CommonJsPlugin {
47
+ /**
48
+ * Apply the plugin
49
+ * @param {Compiler} compiler the compiler instance
50
+ * @returns {void}
51
+ */
34
52
  apply(compiler) {
35
53
  compiler.hooks.compilation.tap(
36
- "CommonJsPlugin",
54
+ PLUGIN_NAME,
37
55
  (compilation, { contextModuleFactory, normalModuleFactory }) => {
38
56
  compilation.dependencyFactories.set(
39
57
  CommonJsRequireDependency,
@@ -126,21 +144,21 @@ class CommonJsPlugin {
126
144
 
127
145
  compilation.hooks.runtimeRequirementInModule
128
146
  .for(RuntimeGlobals.harmonyModuleDecorator)
129
- .tap("CommonJsPlugin", (module, set) => {
147
+ .tap(PLUGIN_NAME, (module, set) => {
130
148
  set.add(RuntimeGlobals.module);
131
149
  set.add(RuntimeGlobals.requireScope);
132
150
  });
133
151
 
134
152
  compilation.hooks.runtimeRequirementInModule
135
153
  .for(RuntimeGlobals.nodeModuleDecorator)
136
- .tap("CommonJsPlugin", (module, set) => {
154
+ .tap(PLUGIN_NAME, (module, set) => {
137
155
  set.add(RuntimeGlobals.module);
138
156
  set.add(RuntimeGlobals.requireScope);
139
157
  });
140
158
 
141
159
  compilation.hooks.runtimeRequirementInTree
142
160
  .for(RuntimeGlobals.harmonyModuleDecorator)
143
- .tap("CommonJsPlugin", (chunk, set) => {
161
+ .tap(PLUGIN_NAME, (chunk, set) => {
144
162
  compilation.addRuntimeModule(
145
163
  chunk,
146
164
  new HarmonyModuleDecoratorRuntimeModule()
@@ -149,27 +167,32 @@ class CommonJsPlugin {
149
167
 
150
168
  compilation.hooks.runtimeRequirementInTree
151
169
  .for(RuntimeGlobals.nodeModuleDecorator)
152
- .tap("CommonJsPlugin", (chunk, set) => {
170
+ .tap(PLUGIN_NAME, (chunk, set) => {
153
171
  compilation.addRuntimeModule(
154
172
  chunk,
155
173
  new NodeModuleDecoratorRuntimeModule()
156
174
  );
157
175
  });
158
176
 
177
+ /**
178
+ * @param {Parser} parser parser parser
179
+ * @param {JavascriptParserOptions} parserOptions parserOptions
180
+ * @returns {void}
181
+ */
159
182
  const handler = (parser, parserOptions) => {
160
183
  if (parserOptions.commonjs !== undefined && !parserOptions.commonjs)
161
184
  return;
162
185
  parser.hooks.typeof
163
186
  .for("module")
164
187
  .tap(
165
- "CommonJsPlugin",
188
+ PLUGIN_NAME,
166
189
  toConstantDependency(parser, JSON.stringify("object"))
167
190
  );
168
191
 
169
192
  parser.hooks.expression
170
193
  .for("require.main")
171
194
  .tap(
172
- "CommonJsPlugin",
195
+ PLUGIN_NAME,
173
196
  toConstantDependency(
174
197
  parser,
175
198
  `${RuntimeGlobals.moduleCache}[${RuntimeGlobals.entryModuleId}]`,
@@ -177,33 +200,35 @@ class CommonJsPlugin {
177
200
  )
178
201
  );
179
202
  parser.hooks.expression
180
- .for("module.loaded")
181
- .tap("CommonJsPlugin", expr => {
182
- parser.state.module.buildInfo.moduleConcatenationBailout =
183
- "module.loaded";
203
+ .for(RuntimeGlobals.moduleLoaded)
204
+ .tap(PLUGIN_NAME, expr => {
205
+ /** @type {BuildInfo} */
206
+ (parser.state.module.buildInfo).moduleConcatenationBailout =
207
+ RuntimeGlobals.moduleLoaded;
184
208
  const dep = new RuntimeRequirementsDependency([
185
209
  RuntimeGlobals.moduleLoaded
186
210
  ]);
187
- dep.loc = expr.loc;
211
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
188
212
  parser.state.module.addPresentationalDependency(dep);
189
213
  return true;
190
214
  });
191
215
 
192
216
  parser.hooks.expression
193
- .for("module.id")
194
- .tap("CommonJsPlugin", expr => {
195
- parser.state.module.buildInfo.moduleConcatenationBailout =
196
- "module.id";
217
+ .for(RuntimeGlobals.moduleId)
218
+ .tap(PLUGIN_NAME, expr => {
219
+ /** @type {BuildInfo} */
220
+ (parser.state.module.buildInfo).moduleConcatenationBailout =
221
+ RuntimeGlobals.moduleId;
197
222
  const dep = new RuntimeRequirementsDependency([
198
223
  RuntimeGlobals.moduleId
199
224
  ]);
200
- dep.loc = expr.loc;
225
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
201
226
  parser.state.module.addPresentationalDependency(dep);
202
227
  return true;
203
228
  });
204
229
 
205
230
  parser.hooks.evaluateIdentifier.for("module.hot").tap(
206
- "CommonJsPlugin",
231
+ PLUGIN_NAME,
207
232
  evaluateToIdentifier("module.hot", "module", () => ["hot"], null)
208
233
  );
209
234
 
@@ -214,11 +239,11 @@ class CommonJsPlugin {
214
239
  };
215
240
 
216
241
  normalModuleFactory.hooks.parser
217
- .for("javascript/auto")
218
- .tap("CommonJsPlugin", handler);
242
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
243
+ .tap(PLUGIN_NAME, handler);
219
244
  normalModuleFactory.hooks.parser
220
- .for("javascript/dynamic")
221
- .tap("CommonJsPlugin", handler);
245
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
246
+ .tap(PLUGIN_NAME, handler);
222
247
  }
223
248
  );
224
249
  }
@@ -230,10 +255,10 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
230
255
  }
231
256
 
232
257
  /**
233
- * @returns {string} runtime code
258
+ * @returns {string | null} runtime code
234
259
  */
235
260
  generate() {
236
- const { runtimeTemplate } = this.compilation;
261
+ const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
237
262
  return Template.asString([
238
263
  `${
239
264
  RuntimeGlobals.harmonyModuleDecorator
@@ -260,10 +285,10 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
260
285
  }
261
286
 
262
287
  /**
263
- * @returns {string} runtime code
288
+ * @returns {string | null} runtime code
264
289
  */
265
290
  generate() {
266
- const { runtimeTemplate } = this.compilation;
291
+ const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
267
292
  return Template.asString([
268
293
  `${RuntimeGlobals.nodeModuleDecorator} = ${runtimeTemplate.basicFunction(
269
294
  "module",
@@ -9,32 +9,53 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+
12
16
  class CommonJsRequireContextDependency extends ContextDependency {
13
- constructor(options, range, valueRange) {
14
- super(options);
17
+ /**
18
+ * @param {TODO} options options for the context module
19
+ * @param {Range} range location in source code
20
+ * @param {Range | undefined} valueRange location of the require call
21
+ * @param {boolean | string } inShorthand true or name
22
+ * @param {string} context context
23
+ */
24
+ constructor(options, range, valueRange, inShorthand, context) {
25
+ super(options, context);
15
26
 
16
27
  this.range = range;
17
28
  this.valueRange = valueRange;
29
+ // inShorthand must be serialized by subclasses that use it
30
+ this.inShorthand = inShorthand;
18
31
  }
19
32
 
20
33
  get type() {
21
34
  return "cjs require context";
22
35
  }
23
36
 
37
+ /**
38
+ * @param {ObjectSerializerContext} context context
39
+ */
24
40
  serialize(context) {
25
41
  const { write } = context;
26
42
 
27
43
  write(this.range);
28
44
  write(this.valueRange);
45
+ write(this.inShorthand);
29
46
 
30
47
  super.serialize(context);
31
48
  }
32
49
 
50
+ /**
51
+ * @param {ObjectDeserializerContext} context context
52
+ */
33
53
  deserialize(context) {
34
54
  const { read } = context;
35
55
 
36
56
  this.range = read();
37
57
  this.valueRange = read();
58
+ this.inShorthand = read();
38
59
 
39
60
  super.deserialize(context);
40
61
  }
@@ -9,10 +9,18 @@ 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 CommonJsRequireDependency extends ModuleDependency {
13
- constructor(request, range) {
15
+ /**
16
+ * @param {string} request request
17
+ * @param {Range=} range location in source code
18
+ * @param {string=} context request context
19
+ */
20
+ constructor(request, range, context) {
14
21
  super(request);
15
22
  this.range = range;
23
+ this._context = context;
16
24
  }
17
25
 
18
26
  get type() {
@@ -17,9 +17,19 @@ const NullDependency = require("./NullDependency");
17
17
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
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/runtime").RuntimeSpec} RuntimeSpec */
24
+ /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
21
25
 
22
26
  class CommonJsSelfReferenceDependency extends NullDependency {
27
+ /**
28
+ * @param {Range} range range
29
+ * @param {CommonJSDependencyBaseKeywords} base base
30
+ * @param {string[]} names names
31
+ * @param {boolean} call is a call
32
+ */
23
33
  constructor(range, base, names, call) {
24
34
  super();
25
35
  this.range = range;
@@ -40,7 +50,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
40
50
  * @returns {string | null} an identifier to merge equal requests
41
51
  */
42
52
  getResourceIdentifier() {
43
- return `self`;
53
+ return "self";
44
54
  }
45
55
 
46
56
  /**
@@ -53,6 +63,9 @@ class CommonJsSelfReferenceDependency extends NullDependency {
53
63
  return [this.call ? this.names.slice(0, -1) : this.names];
54
64
  }
55
65
 
66
+ /**
67
+ * @param {ObjectSerializerContext} context context
68
+ */
56
69
  serialize(context) {
57
70
  const { write } = context;
58
71
  write(this.range);
@@ -62,6 +75,9 @@ class CommonJsSelfReferenceDependency extends NullDependency {
62
75
  super.serialize(context);
63
76
  }
64
77
 
78
+ /**
79
+ * @param {ObjectDeserializerContext} context context
80
+ */
65
81
  deserialize(context) {
66
82
  const { read } = context;
67
83
  this.range = read();
@@ -92,19 +108,17 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
92
108
  { module, moduleGraph, runtime, runtimeRequirements }
93
109
  ) {
94
110
  const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
95
- let used;
96
- if (dep.names.length === 0) {
97
- used = dep.names;
98
- } else {
99
- used = moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
100
- }
111
+ const used =
112
+ dep.names.length === 0
113
+ ? dep.names
114
+ : moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
101
115
  if (!used) {
102
116
  throw new Error(
103
117
  "Self-reference dependency has unused export name: This should not happen"
104
118
  );
105
119
  }
106
120
 
107
- let base = undefined;
121
+ let base;
108
122
  switch (dep.base) {
109
123
  case "exports":
110
124
  runtimeRequirements.add(RuntimeGlobals.exports);
@@ -15,13 +15,16 @@ const NullDependency = require("./NullDependency");
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
21
  /** @typedef {import("../util/Hash")} Hash */
19
22
 
20
23
  class ConstDependency extends NullDependency {
21
24
  /**
22
25
  * @param {string} expression the expression
23
- * @param {number|[number, number]} range the source range
24
- * @param {string[]=} runtimeRequirements runtime requirements
26
+ * @param {number | Range} range the source range
27
+ * @param {(string[] | null)=} runtimeRequirements runtime requirements
25
28
  */
26
29
  constructor(expression, range, runtimeRequirements) {
27
30
  super();
@@ -41,7 +44,7 @@ class ConstDependency extends NullDependency {
41
44
  */
42
45
  updateHash(hash, context) {
43
46
  if (this._hashUpdate === undefined) {
44
- let hashUpdate = "" + this.range + "|" + this.expression;
47
+ let hashUpdate = `${this.range}|${this.expression}`;
45
48
  if (this.runtimeRequirements) {
46
49
  for (const item of this.runtimeRequirements) {
47
50
  hashUpdate += "|";
@@ -61,6 +64,9 @@ class ConstDependency extends NullDependency {
61
64
  return false;
62
65
  }
63
66
 
67
+ /**
68
+ * @param {ObjectSerializerContext} context context
69
+ */
64
70
  serialize(context) {
65
71
  const { write } = context;
66
72
  write(this.expression);
@@ -69,6 +75,9 @@ class ConstDependency extends NullDependency {
69
75
  super.serialize(context);
70
76
  }
71
77
 
78
+ /**
79
+ * @param {ObjectDeserializerContext} context context
80
+ */
72
81
  deserialize(context) {
73
82
  const { read } = context;
74
83
  this.expression = read();
@@ -14,6 +14,8 @@ const memoize = require("../util/memoize");
14
14
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
16
  /** @typedef {import("../WebpackError")} WebpackError */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
19
 
18
20
  const getCriticalDependencyWarning = memoize(() =>
19
21
  require("./CriticalDependencyWarning")
@@ -21,18 +23,23 @@ const getCriticalDependencyWarning = memoize(() =>
21
23
 
22
24
  /** @typedef {ContextOptions & { request: string }} ContextDependencyOptions */
23
25
 
24
- const regExpToString = r => (r ? r + "" : "");
26
+ /**
27
+ * @param {RegExp | null | undefined} r regexp
28
+ * @returns {string} stringified regexp
29
+ */
30
+ const regExpToString = r => (r ? String(r) : "");
25
31
 
26
32
  class ContextDependency extends Dependency {
27
33
  /**
28
34
  * @param {ContextDependencyOptions} options options for the context module
35
+ * @param {string=} context request context
29
36
  */
30
- constructor(options) {
37
+ constructor(options, context) {
31
38
  super();
32
39
 
33
40
  this.options = options;
34
41
  this.userRequest = this.options && this.options.request;
35
- /** @type {false | string} */
42
+ /** @type {false | undefined | string} */
36
43
  this.critical = false;
37
44
  this.hadGlobalOrStickyRegExp = false;
38
45
 
@@ -47,8 +54,18 @@ class ContextDependency extends Dependency {
47
54
  this.request = undefined;
48
55
  this.range = undefined;
49
56
  this.valueRange = undefined;
57
+ /** @type {boolean | string | undefined} */
58
+ this.inShorthand = undefined;
50
59
  // TODO refactor this
51
60
  this.replaces = undefined;
61
+ this._requestContext = context;
62
+ }
63
+
64
+ /**
65
+ * @returns {string | undefined} a request context
66
+ */
67
+ getContext() {
68
+ return this._requestContext;
52
69
  }
53
70
 
54
71
  get category() {
@@ -67,7 +84,9 @@ class ContextDependency extends Dependency {
67
84
  */
68
85
  getResourceIdentifier() {
69
86
  return (
70
- `context${this.options.request} ${this.options.recursive} ` +
87
+ `context${this._requestContext || ""}|ctx request${
88
+ this.options.request
89
+ } ${this.options.recursive} ` +
71
90
  `${regExpToString(this.options.regExp)} ${regExpToString(
72
91
  this.options.include
73
92
  )} ${regExpToString(this.options.exclude)} ` +
@@ -79,7 +98,7 @@ class ContextDependency extends Dependency {
79
98
  /**
80
99
  * Returns warnings
81
100
  * @param {ModuleGraph} moduleGraph module graph
82
- * @returns {WebpackError[]} warnings
101
+ * @returns {WebpackError[] | null | undefined} warnings
83
102
  */
84
103
  getWarnings(moduleGraph) {
85
104
  let warnings = super.getWarnings(moduleGraph);
@@ -103,6 +122,9 @@ class ContextDependency extends Dependency {
103
122
  return warnings;
104
123
  }
105
124
 
125
+ /**
126
+ * @param {ObjectSerializerContext} context context
127
+ */
106
128
  serialize(context) {
107
129
  const { write } = context;
108
130
 
@@ -111,6 +133,7 @@ class ContextDependency extends Dependency {
111
133
  write(this.critical);
112
134
  write(this.hadGlobalOrStickyRegExp);
113
135
  write(this.request);
136
+ write(this._requestContext);
114
137
  write(this.range);
115
138
  write(this.valueRange);
116
139
  write(this.prepend);
@@ -119,6 +142,9 @@ class ContextDependency extends Dependency {
119
142
  super.serialize(context);
120
143
  }
121
144
 
145
+ /**
146
+ * @param {ObjectDeserializerContext} context context
147
+ */
122
148
  deserialize(context) {
123
149
  const { read } = context;
124
150
 
@@ -127,6 +153,7 @@ class ContextDependency extends Dependency {
127
153
  this.critical = read();
128
154
  this.hadGlobalOrStickyRegExp = read();
129
155
  this.request = read();
156
+ this._requestContext = read();
130
157
  this.range = read();
131
158
  this.valueRange = read();
132
159
  this.prepend = read();