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
@@ -12,8 +12,17 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
+ /** @typedef {import("./AMDRequireItemDependency")} AMDRequireItemDependency */
19
+ /** @typedef {import("./LocalModuleDependency")} LocalModuleDependency */
15
20
 
16
21
  class AMDRequireArrayDependency extends NullDependency {
22
+ /**
23
+ * @param {(string | LocalModuleDependency | AMDRequireItemDependency)[]} depsArray deps array
24
+ * @param {Range} range range
25
+ */
17
26
  constructor(depsArray, range) {
18
27
  super();
19
28
 
@@ -29,6 +38,9 @@ class AMDRequireArrayDependency extends NullDependency {
29
38
  return "amd";
30
39
  }
31
40
 
41
+ /**
42
+ * @param {ObjectSerializerContext} context context
43
+ */
32
44
  serialize(context) {
33
45
  const { write } = context;
34
46
 
@@ -38,6 +50,9 @@ class AMDRequireArrayDependency extends NullDependency {
38
50
  super.serialize(context);
39
51
  }
40
52
 
53
+ /**
54
+ * @param {ObjectDeserializerContext} context context
55
+ */
41
56
  deserialize(context) {
42
57
  const { read } = context;
43
58
 
@@ -68,13 +83,23 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
68
83
  source.replace(dep.range[0], dep.range[1] - 1, content);
69
84
  }
70
85
 
86
+ /**
87
+ * @param {AMDRequireArrayDependency} dep the dependency for which the template should be applied
88
+ * @param {DependencyTemplateContext} templateContext the context object
89
+ * @returns {string} content
90
+ */
71
91
  getContent(dep, templateContext) {
72
- const requires = dep.depsArray.map(dependency => {
73
- return this.contentForDependency(dependency, templateContext);
74
- });
92
+ const requires = dep.depsArray.map(dependency =>
93
+ this.contentForDependency(dependency, templateContext)
94
+ );
75
95
  return `[${requires.join(", ")}]`;
76
96
  }
77
97
 
98
+ /**
99
+ * @param {TODO} dep the dependency for which the template should be applied
100
+ * @param {DependencyTemplateContext} templateContext the context object
101
+ * @returns {string} content
102
+ */
78
103
  contentForDependency(
79
104
  dep,
80
105
  { runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements }
@@ -85,14 +110,13 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
85
110
 
86
111
  if (dep.localModule) {
87
112
  return dep.localModule.variableName();
88
- } else {
89
- return runtimeTemplate.moduleExports({
90
- module: moduleGraph.getModule(dep),
91
- chunkGraph,
92
- request: dep.request,
93
- runtimeRequirements
94
- });
95
113
  }
114
+ return runtimeTemplate.moduleExports({
115
+ module: moduleGraph.getModule(dep),
116
+ chunkGraph,
117
+ request: dep.request,
118
+ runtimeRequirements
119
+ });
96
120
  }
97
121
  };
98
122
 
@@ -8,7 +8,16 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
 
11
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
+
11
15
  class AMDRequireContextDependency extends ContextDependency {
16
+ /**
17
+ * @param {TODO} options options
18
+ * @param {Range} range range
19
+ * @param {Range} valueRange value range
20
+ */
12
21
  constructor(options, range, valueRange) {
13
22
  super(options);
14
23
 
@@ -24,6 +33,9 @@ class AMDRequireContextDependency extends ContextDependency {
24
33
  return "amd";
25
34
  }
26
35
 
36
+ /**
37
+ * @param {ObjectSerializerContext} context context
38
+ */
27
39
  serialize(context) {
28
40
  const { write } = context;
29
41
 
@@ -33,6 +45,9 @@ class AMDRequireContextDependency extends ContextDependency {
33
45
  super.serialize(context);
34
46
  }
35
47
 
48
+ /**
49
+ * @param {ObjectDeserializerContext} context context
50
+ */
36
51
  deserialize(context) {
37
52
  const { read } = context;
38
53
 
@@ -8,7 +8,13 @@
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
12
+
11
13
  class AMDRequireDependenciesBlock extends AsyncDependenciesBlock {
14
+ /**
15
+ * @param {DependencyLocation} loc location info
16
+ * @param {string=} request request
17
+ */
12
18
  constructor(loc, request) {
13
19
  super(null, loc, request);
14
20
  }
@@ -19,19 +19,42 @@ const { getLocalModule } = require("./LocalModulesHelpers");
19
19
  const UnsupportedDependency = require("./UnsupportedDependency");
20
20
  const getFunctionExpression = require("./getFunctionExpression");
21
21
 
22
+ /** @typedef {import("estree").CallExpression} CallExpression */
23
+ /** @typedef {import("estree").Expression} Expression */
24
+ /** @typedef {import("estree").Identifier} Identifier */
25
+ /** @typedef {import("estree").SourceLocation} SourceLocation */
26
+ /** @typedef {import("estree").SpreadElement} SpreadElement */
27
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
28
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
29
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
30
+ /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
31
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
32
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
33
+
22
34
  class AMDRequireDependenciesBlockParserPlugin {
35
+ /**
36
+ * @param {JavascriptParserOptions} options parserOptions
37
+ */
23
38
  constructor(options) {
24
39
  this.options = options;
25
40
  }
26
41
 
42
+ /**
43
+ * @param {JavascriptParser} parser the parser
44
+ * @param {Expression | SpreadElement} expression expression
45
+ * @returns {boolean} need bind this
46
+ */
27
47
  processFunctionArgument(parser, expression) {
28
48
  let bindThis = true;
29
49
  const fnData = getFunctionExpression(expression);
30
50
  if (fnData) {
31
51
  parser.inScope(
32
- fnData.fn.params.filter(i => {
33
- return !["require", "module", "exports"].includes(i.name);
34
- }),
52
+ fnData.fn.params.filter(
53
+ i =>
54
+ !["require", "module", "exports"].includes(
55
+ /** @type {Identifier} */ (i).name
56
+ )
57
+ ),
35
58
  () => {
36
59
  if (fnData.fn.body.type === "BlockStatement") {
37
60
  parser.walkStatement(fnData.fn.body);
@@ -50,6 +73,10 @@ class AMDRequireDependenciesBlockParserPlugin {
50
73
  return bindThis;
51
74
  }
52
75
 
76
+ /**
77
+ * @param {JavascriptParser} parser the parser
78
+ * @returns {void}
79
+ */
53
80
  apply(parser) {
54
81
  parser.hooks.call
55
82
  .for("require")
@@ -59,9 +86,15 @@ class AMDRequireDependenciesBlockParserPlugin {
59
86
  );
60
87
  }
61
88
 
89
+ /**
90
+ * @param {JavascriptParser} parser the parser
91
+ * @param {CallExpression} expr call expression
92
+ * @param {BasicEvaluatedExpression} param param
93
+ * @returns {boolean | undefined} result
94
+ */
62
95
  processArray(parser, expr, param) {
63
96
  if (param.isArray()) {
64
- for (const p of param.items) {
97
+ for (const p of /** @type {BasicEvaluatedExpression[]} */ (param.items)) {
65
98
  const result = this.processItem(parser, expr, p);
66
99
  if (result === undefined) {
67
100
  this.processContext(parser, expr, p);
@@ -69,36 +102,50 @@ class AMDRequireDependenciesBlockParserPlugin {
69
102
  }
70
103
  return true;
71
104
  } else if (param.isConstArray()) {
105
+ /** @type {(string | LocalModuleDependency | AMDRequireItemDependency)[]} */
72
106
  const deps = [];
73
- for (const request of param.array) {
74
- let dep, localModule;
107
+ for (const request of /** @type {any[]} */ (param.array)) {
108
+ let dep;
109
+ let localModule;
75
110
  if (request === "require") {
76
- dep = "__webpack_require__";
111
+ dep = RuntimeGlobals.require;
77
112
  } else if (["exports", "module"].includes(request)) {
78
113
  dep = request;
79
114
  } else if ((localModule = getLocalModule(parser.state, request))) {
80
115
  localModule.flagUsed();
81
116
  dep = new LocalModuleDependency(localModule, undefined, false);
82
- dep.loc = expr.loc;
117
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
83
118
  parser.state.module.addPresentationalDependency(dep);
84
119
  } else {
85
120
  dep = this.newRequireItemDependency(request);
86
- dep.loc = expr.loc;
87
- dep.optional = !!parser.scope.inTry;
121
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
122
+ dep.optional = Boolean(parser.scope.inTry);
88
123
  parser.state.current.addDependency(dep);
89
124
  }
90
125
  deps.push(dep);
91
126
  }
92
- const dep = this.newRequireArrayDependency(deps, param.range);
93
- dep.loc = expr.loc;
94
- dep.optional = !!parser.scope.inTry;
127
+ const dep = this.newRequireArrayDependency(
128
+ deps,
129
+ /** @type {Range} */ (param.range)
130
+ );
131
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
132
+ dep.optional = Boolean(parser.scope.inTry);
95
133
  parser.state.module.addPresentationalDependency(dep);
96
134
  return true;
97
135
  }
98
136
  }
137
+
138
+ /**
139
+ * @param {JavascriptParser} parser the parser
140
+ * @param {CallExpression} expr call expression
141
+ * @param {BasicEvaluatedExpression} param param
142
+ * @returns {boolean | undefined} result
143
+ */
99
144
  processItem(parser, expr, param) {
100
145
  if (param.isConditional()) {
101
- for (const p of param.options) {
146
+ for (const p of /** @type {BasicEvaluatedExpression[]} */ (
147
+ param.options
148
+ )) {
102
149
  const result = this.processItem(parser, expr, p);
103
150
  if (result === undefined) {
104
151
  this.processContext(parser, expr, p);
@@ -106,42 +153,62 @@ class AMDRequireDependenciesBlockParserPlugin {
106
153
  }
107
154
  return true;
108
155
  } else if (param.isString()) {
109
- let dep, localModule;
156
+ let dep;
157
+ let localModule;
110
158
  if (param.string === "require") {
111
- dep = new ConstDependency("__webpack_require__", param.string, [
112
- RuntimeGlobals.require
113
- ]);
159
+ dep = new ConstDependency(
160
+ RuntimeGlobals.require,
161
+ /** @type {TODO} */ (param.string),
162
+ [RuntimeGlobals.require]
163
+ );
114
164
  } else if (param.string === "module") {
115
165
  dep = new ConstDependency(
116
- parser.state.module.buildInfo.moduleArgument,
117
- param.range,
166
+ /** @type {BuildInfo} */
167
+ (parser.state.module.buildInfo).moduleArgument,
168
+ /** @type {Range} */ (param.range),
118
169
  [RuntimeGlobals.module]
119
170
  );
120
171
  } else if (param.string === "exports") {
121
172
  dep = new ConstDependency(
122
- parser.state.module.buildInfo.exportsArgument,
123
- param.range,
173
+ /** @type {BuildInfo} */
174
+ (parser.state.module.buildInfo).exportsArgument,
175
+ /** @type {Range} */ (param.range),
124
176
  [RuntimeGlobals.exports]
125
177
  );
126
- } else if ((localModule = getLocalModule(parser.state, param.string))) {
178
+ } else if (
179
+ (localModule = getLocalModule(
180
+ parser.state,
181
+ /** @type {string} */ (param.string)
182
+ ))
183
+ ) {
127
184
  localModule.flagUsed();
128
185
  dep = new LocalModuleDependency(localModule, param.range, false);
129
186
  } else {
130
- dep = this.newRequireItemDependency(param.string, param.range);
131
- dep.loc = expr.loc;
132
- dep.optional = !!parser.scope.inTry;
187
+ dep = this.newRequireItemDependency(
188
+ /** @type {string} */ (param.string),
189
+ param.range
190
+ );
191
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
192
+ dep.optional = Boolean(parser.scope.inTry);
133
193
  parser.state.current.addDependency(dep);
134
194
  return true;
135
195
  }
136
- dep.loc = expr.loc;
196
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
137
197
  parser.state.module.addPresentationalDependency(dep);
138
198
  return true;
139
199
  }
140
200
  }
201
+
202
+ /**
203
+ * @param {JavascriptParser} parser the parser
204
+ * @param {CallExpression} expr call expression
205
+ * @param {BasicEvaluatedExpression} param param
206
+ * @returns {boolean | undefined} result
207
+ */
141
208
  processContext(parser, expr, param) {
142
209
  const dep = ContextDependencyHelpers.create(
143
210
  AMDRequireContextDependency,
144
- param.range,
211
+ /** @type {Range} */ (param.range),
145
212
  param,
146
213
  expr,
147
214
  this.options,
@@ -151,96 +218,135 @@ class AMDRequireDependenciesBlockParserPlugin {
151
218
  parser
152
219
  );
153
220
  if (!dep) return;
154
- dep.loc = expr.loc;
155
- dep.optional = !!parser.scope.inTry;
221
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
222
+ dep.optional = Boolean(parser.scope.inTry);
156
223
  parser.state.current.addDependency(dep);
157
224
  return true;
158
225
  }
159
226
 
227
+ /**
228
+ * @param {BasicEvaluatedExpression} param param
229
+ * @returns {string | undefined} result
230
+ */
160
231
  processArrayForRequestString(param) {
161
232
  if (param.isArray()) {
162
- const result = param.items.map(item =>
163
- this.processItemForRequestString(item)
164
- );
233
+ const result =
234
+ /** @type {BasicEvaluatedExpression[]} */
235
+ (param.items).map(item => this.processItemForRequestString(item));
165
236
  if (result.every(Boolean)) return result.join(" ");
166
237
  } else if (param.isConstArray()) {
167
- return param.array.join(" ");
238
+ return /** @type {string[]} */ (param.array).join(" ");
168
239
  }
169
240
  }
170
241
 
242
+ /**
243
+ * @param {BasicEvaluatedExpression} param param
244
+ * @returns {string | undefined} result
245
+ */
171
246
  processItemForRequestString(param) {
172
247
  if (param.isConditional()) {
173
- const result = param.options.map(item =>
174
- this.processItemForRequestString(item)
175
- );
248
+ const result =
249
+ /** @type {BasicEvaluatedExpression[]} */
250
+ (param.options).map(item => this.processItemForRequestString(item));
176
251
  if (result.every(Boolean)) return result.join("|");
177
252
  } else if (param.isString()) {
178
253
  return param.string;
179
254
  }
180
255
  }
181
256
 
257
+ /**
258
+ * @param {JavascriptParser} parser the parser
259
+ * @param {CallExpression} expr call expression
260
+ * @returns {boolean | undefined} result
261
+ */
182
262
  processCallRequire(parser, expr) {
263
+ /** @type {BasicEvaluatedExpression | undefined} */
183
264
  let param;
265
+ /** @type {AMDRequireDependenciesBlock | undefined | null} */
184
266
  let depBlock;
267
+ /** @type {AMDRequireDependency | undefined} */
185
268
  let dep;
269
+ /** @type {boolean | undefined} */
186
270
  let result;
187
271
 
188
272
  const old = parser.state.current;
189
273
 
190
274
  if (expr.arguments.length >= 1) {
191
- param = parser.evaluateExpression(expr.arguments[0]);
275
+ param = parser.evaluateExpression(
276
+ /** @type {Expression} */ (expr.arguments[0])
277
+ );
192
278
  depBlock = this.newRequireDependenciesBlock(
193
- expr.loc,
279
+ /** @type {DependencyLocation} */ (expr.loc),
194
280
  this.processArrayForRequestString(param)
195
281
  );
196
282
  dep = this.newRequireDependency(
197
- expr.range,
198
- param.range,
199
- expr.arguments.length > 1 ? expr.arguments[1].range : null,
200
- expr.arguments.length > 2 ? expr.arguments[2].range : null
283
+ /** @type {Range} */ (expr.range),
284
+ /** @type {Range} */ (param.range),
285
+ expr.arguments.length > 1
286
+ ? /** @type {Range} */ (expr.arguments[1].range)
287
+ : null,
288
+ expr.arguments.length > 2
289
+ ? /** @type {Range} */ (expr.arguments[2].range)
290
+ : null
201
291
  );
202
- dep.loc = expr.loc;
292
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
203
293
  depBlock.addDependency(dep);
204
294
 
205
- parser.state.current = depBlock;
295
+ parser.state.current = /** @type {TODO} */ (depBlock);
206
296
  }
207
297
 
208
298
  if (expr.arguments.length === 1) {
209
299
  parser.inScope([], () => {
210
- result = this.processArray(parser, expr, param);
300
+ result = this.processArray(
301
+ parser,
302
+ expr,
303
+ /** @type {BasicEvaluatedExpression} */ (param)
304
+ );
211
305
  });
212
306
  parser.state.current = old;
213
307
  if (!result) return;
214
- parser.state.current.addBlock(depBlock);
308
+ parser.state.current.addBlock(
309
+ /** @type {AMDRequireDependenciesBlock} */ (depBlock)
310
+ );
215
311
  return true;
216
312
  }
217
313
 
218
314
  if (expr.arguments.length === 2 || expr.arguments.length === 3) {
219
315
  try {
220
316
  parser.inScope([], () => {
221
- result = this.processArray(parser, expr, param);
317
+ result = this.processArray(
318
+ parser,
319
+ expr,
320
+ /** @type {BasicEvaluatedExpression} */ (param)
321
+ );
222
322
  });
223
323
  if (!result) {
224
- const dep = new UnsupportedDependency("unsupported", expr.range);
324
+ const dep = new UnsupportedDependency(
325
+ "unsupported",
326
+ /** @type {Range} */ (expr.range)
327
+ );
225
328
  old.addPresentationalDependency(dep);
226
329
  if (parser.state.module) {
227
330
  parser.state.module.addError(
228
331
  new UnsupportedFeatureWarning(
229
- "Cannot statically analyse 'require(…, …)' in line " +
230
- expr.loc.start.line,
231
- expr.loc
332
+ `Cannot statically analyse 'require(…, …)' in line ${
333
+ /** @type {SourceLocation} */ (expr.loc).start.line
334
+ }`,
335
+ /** @type {DependencyLocation} */ (expr.loc)
232
336
  )
233
337
  );
234
338
  }
235
339
  depBlock = null;
236
340
  return true;
237
341
  }
238
- dep.functionBindThis = this.processFunctionArgument(
342
+ /** @type {AMDRequireDependency} */
343
+ (dep).functionBindThis = this.processFunctionArgument(
239
344
  parser,
240
345
  expr.arguments[1]
241
346
  );
242
347
  if (expr.arguments.length === 3) {
243
- dep.errorCallbackBindThis = this.processFunctionArgument(
348
+ /** @type {AMDRequireDependency} */
349
+ (dep).errorCallbackBindThis = this.processFunctionArgument(
244
350
  parser,
245
351
  expr.arguments[2]
246
352
  );
@@ -253,9 +359,22 @@ class AMDRequireDependenciesBlockParserPlugin {
253
359
  }
254
360
  }
255
361
 
362
+ /**
363
+ * @param {DependencyLocation} loc location
364
+ * @param {string=} request request
365
+ * @returns {AMDRequireDependenciesBlock} AMDRequireDependenciesBlock
366
+ */
256
367
  newRequireDependenciesBlock(loc, request) {
257
368
  return new AMDRequireDependenciesBlock(loc, request);
258
369
  }
370
+
371
+ /**
372
+ * @param {Range} outerRange outer range
373
+ * @param {Range} arrayRange array range
374
+ * @param {Range | null} functionRange function range
375
+ * @param {Range | null} errorCallbackRange error callback range
376
+ * @returns {AMDRequireDependency} dependency
377
+ */
259
378
  newRequireDependency(
260
379
  outerRange,
261
380
  arrayRange,
@@ -269,9 +388,21 @@ class AMDRequireDependenciesBlockParserPlugin {
269
388
  errorCallbackRange
270
389
  );
271
390
  }
391
+
392
+ /**
393
+ * @param {string} request request
394
+ * @param {Range=} range range
395
+ * @returns {AMDRequireItemDependency} AMDRequireItemDependency
396
+ */
272
397
  newRequireItemDependency(request, range) {
273
398
  return new AMDRequireItemDependency(request, range);
274
399
  }
400
+
401
+ /**
402
+ * @param {(string | LocalModuleDependency | AMDRequireItemDependency)[]} depsArray deps array
403
+ * @param {Range} range range
404
+ * @returns {AMDRequireArrayDependency} AMDRequireArrayDependency
405
+ */
275
406
  newRequireArrayDependency(depsArray, range) {
276
407
  return new AMDRequireArrayDependency(depsArray, range);
277
408
  }
@@ -13,8 +13,17 @@ 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 AMDRequireDependency extends NullDependency {
21
+ /**
22
+ * @param {Range} outerRange outer range
23
+ * @param {Range} arrayRange array range
24
+ * @param {Range | null} functionRange function range
25
+ * @param {Range | null} errorCallbackRange error callback range
26
+ */
18
27
  constructor(outerRange, arrayRange, functionRange, errorCallbackRange) {
19
28
  super();
20
29
 
@@ -30,6 +39,9 @@ class AMDRequireDependency extends NullDependency {
30
39
  return "amd";
31
40
  }
32
41
 
42
+ /**
43
+ * @param {ObjectSerializerContext} context context
44
+ */
33
45
  serialize(context) {
34
46
  const { write } = context;
35
47
 
@@ -43,6 +55,9 @@ class AMDRequireDependency extends NullDependency {
43
55
  super.serialize(context);
44
56
  }
45
57
 
58
+ /**
59
+ * @param {ObjectDeserializerContext} context context
60
+ */
46
61
  deserialize(context) {
47
62
  const { read } = context;
48
63
 
@@ -90,7 +105,7 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
90
105
  // has array range but no function range
91
106
  if (dep.arrayRange && !dep.functionRange) {
92
107
  const startBlock = `${promise}.then(function() {`;
93
- const endBlock = `;}).catch(${RuntimeGlobals.uncaughtErrorHandler})`;
108
+ const endBlock = `;})['catch'](${RuntimeGlobals.uncaughtErrorHandler})`;
94
109
  runtimeRequirements.add(RuntimeGlobals.uncaughtErrorHandler);
95
110
 
96
111
  source.replace(dep.outerRange[0], dep.arrayRange[0] - 1, startBlock);
@@ -103,7 +118,7 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
103
118
  // has function range but no array range
104
119
  if (dep.functionRange && !dep.arrayRange) {
105
120
  const startBlock = `${promise}.then((`;
106
- const endBlock = `).bind(exports, __webpack_require__, exports, module)).catch(${RuntimeGlobals.uncaughtErrorHandler})`;
121
+ const endBlock = `).bind(exports, ${RuntimeGlobals.require}, exports, module))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`;
107
122
  runtimeRequirements.add(RuntimeGlobals.uncaughtErrorHandler);
108
123
 
109
124
  source.replace(dep.outerRange[0], dep.functionRange[0] - 1, startBlock);
@@ -118,7 +133,7 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
118
133
  const startBlock = `${promise}.then(function() { `;
119
134
  const errorRangeBlock = `}${
120
135
  dep.functionBindThis ? ".bind(this)" : ""
121
- }).catch(`;
136
+ })['catch'](`;
122
137
  const endBlock = `${dep.errorCallbackBindThis ? ".bind(this)" : ""})`;
123
138
 
124
139
  source.replace(dep.outerRange[0], dep.arrayRange[0] - 1, startBlock);
@@ -150,9 +165,9 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
150
165
  // has array range, function range, but no errorCallbackRange
151
166
  if (dep.arrayRange && dep.functionRange) {
152
167
  const startBlock = `${promise}.then(function() { `;
153
- const endBlock = `}${dep.functionBindThis ? ".bind(this)" : ""}).catch(${
154
- RuntimeGlobals.uncaughtErrorHandler
155
- })`;
168
+ const endBlock = `}${
169
+ dep.functionBindThis ? ".bind(this)" : ""
170
+ })['catch'](${RuntimeGlobals.uncaughtErrorHandler})`;
156
171
  runtimeRequirements.add(RuntimeGlobals.uncaughtErrorHandler);
157
172
 
158
173
  source.replace(dep.outerRange[0], dep.arrayRange[0] - 1, startBlock);
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class AMDRequireItemDependency 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
 
@@ -14,7 +14,7 @@ class AMDDefineRuntimeModule extends RuntimeModule {
14
14
  }
15
15
 
16
16
  /**
17
- * @returns {string} runtime code
17
+ * @returns {string | null} runtime code
18
18
  */
19
19
  generate() {
20
20
  return Template.asString([
@@ -35,7 +35,7 @@ class AMDOptionsRuntimeModule extends RuntimeModule {
35
35
  }
36
36
 
37
37
  /**
38
- * @returns {string} runtime code
38
+ * @returns {string | null} runtime code
39
39
  */
40
40
  generate() {
41
41
  return Template.asString([
@@ -44,5 +44,5 @@ class AMDOptionsRuntimeModule extends RuntimeModule {
44
44
  }
45
45
  }
46
46
 
47
- exports.AMDDefineRuntimeModule = AMDDefineRuntimeModule;
48
- exports.AMDOptionsRuntimeModule = AMDOptionsRuntimeModule;
47
+ module.exports.AMDDefineRuntimeModule = AMDDefineRuntimeModule;
48
+ module.exports.AMDOptionsRuntimeModule = AMDOptionsRuntimeModule;