webpack 5.76.1 → 5.88.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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