webpack 5.76.1 → 5.88.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.

Potentially problematic release.


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

Files changed (436) 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 +4 -0
  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 +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  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/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -18,6 +18,7 @@ const ChunkGraph = require("./ChunkGraph");
18
18
  const Module = require("./Module");
19
19
  const ModuleFactory = require("./ModuleFactory");
20
20
  const ModuleGraph = require("./ModuleGraph");
21
+ const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
21
22
  const NormalModule = require("./NormalModule");
22
23
  const BasicEffectRulePlugin = require("./rules/BasicEffectRulePlugin");
23
24
  const BasicMatcherRulePlugin = require("./rules/BasicMatcherRulePlugin");
@@ -85,6 +86,7 @@ const EMPTY_GENERATOR_OPTIONS = {};
85
86
  const EMPTY_ELEMENTS = [];
86
87
 
87
88
  const MATCH_RESOURCE_REGEX = /^([^!]+)!=!/;
89
+ const LEADING_DOT_EXTENSION_REGEX = /^[^.]/;
88
90
 
89
91
  const loaderToIdent = data => {
90
92
  if (!data.options) {
@@ -231,6 +233,9 @@ class NormalModuleFactory extends ModuleFactory {
231
233
  ),
232
234
  generator: new HookMap(
233
235
  () => new SyncHook(["generator", "generatorOptions"])
236
+ ),
237
+ createModuleClass: new HookMap(
238
+ () => new SyncBailHook(["createData", "resolveData"])
234
239
  )
235
240
  });
236
241
  this.resolverFactory = resolverFactory;
@@ -306,9 +311,18 @@ class NormalModuleFactory extends ModuleFactory {
306
311
  return callback(new Error("Empty dependency (no request)"));
307
312
  }
308
313
 
309
- createdModule = new NormalModule(
310
- /** @type {NormalModuleCreateData} */ (createData)
311
- );
314
+ // TODO webpack 6 make it required and move javascript/wasm/asset properties to own module
315
+ createdModule = this.hooks.createModuleClass
316
+ .for(createData.settings.type)
317
+ .call(createData, resolveData);
318
+
319
+ if (!createdModule) {
320
+ createdModule = /** @type {Module} */ (
321
+ new NormalModule(
322
+ /** @type {NormalModuleCreateData} */ (createData)
323
+ )
324
+ );
325
+ }
312
326
  }
313
327
 
314
328
  createdModule = this.hooks.module.call(
@@ -488,7 +502,7 @@ class NormalModuleFactory extends ModuleFactory {
488
502
  -settings.type.length - 10
489
503
  );
490
504
  } else {
491
- settings.type = "javascript/auto";
505
+ settings.type = JAVASCRIPT_MODULE_TYPE_AUTO;
492
506
  const resourceDataForRules = matchResourceData || resourceData;
493
507
  const result = this.ruleSet.exec({
494
508
  resource: resourceDataForRules.path,
@@ -509,6 +523,11 @@ class NormalModuleFactory extends ModuleFactory {
509
523
  issuerLayer: contextInfo.issuerLayer || ""
510
524
  });
511
525
  for (const r of result) {
526
+ // https://github.com/webpack/webpack/issues/16466
527
+ // if a request exists PrePostAutoLoaders, should disable modifying Rule.type
528
+ if (r.type === "type" && noPrePostAutoLoaders) {
529
+ continue;
530
+ }
512
531
  if (r.type === "use") {
513
532
  if (!noAutoLoaders && !noPrePostAutoLoaders) {
514
533
  useLoaders.push(r.value);
@@ -734,7 +753,7 @@ class NormalModuleFactory extends ModuleFactory {
734
753
 
735
754
  /**
736
755
  * @param {ModuleFactoryCreateData} data data object
737
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
756
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
738
757
  * @returns {void}
739
758
  */
740
759
  create(data, callback) {
@@ -841,10 +860,10 @@ class NormalModuleFactory extends ModuleFactory {
841
860
  (err2, hints) => {
842
861
  if (err2) {
843
862
  err.message += `
844
- An fatal error happened during resolving additional hints for this error: ${err2.message}`;
863
+ A fatal error happened during resolving additional hints for this error: ${err2.message}`;
845
864
  err.stack += `
846
865
 
847
- An fatal error happened during resolving additional hints for this error:
866
+ A fatal error happened during resolving additional hints for this error:
848
867
  ${err2.stack}`;
849
868
  return callback(err);
850
869
  }
@@ -852,6 +871,25 @@ ${err2.stack}`;
852
871
  err.message += `
853
872
  ${hints.join("\n\n")}`;
854
873
  }
874
+
875
+ // Check if the extension is missing a leading dot (e.g. "js" instead of ".js")
876
+ let appendResolveExtensionsHint = false;
877
+ const specifiedExtensions = Array.from(
878
+ resolver.options.extensions
879
+ );
880
+ const expectedExtensions = specifiedExtensions.map(extension => {
881
+ if (LEADING_DOT_EXTENSION_REGEX.test(extension)) {
882
+ appendResolveExtensionsHint = true;
883
+ return `.${extension}`;
884
+ }
885
+ return extension;
886
+ });
887
+ if (appendResolveExtensionsHint) {
888
+ err.message += `\nDid you miss the leading dot in 'resolve.extensions'? Did you mean '${JSON.stringify(
889
+ expectedExtensions
890
+ )}' instead of '${JSON.stringify(specifiedExtensions)}'?`;
891
+ }
892
+
855
893
  callback(err);
856
894
  }
857
895
  );
@@ -994,7 +1032,7 @@ If changing the source code is not an option there is also a resolve options cal
994
1032
  context,
995
1033
  item.loader,
996
1034
  resolveContext,
997
- (err, result) => {
1035
+ (err, result, resolveRequest) => {
998
1036
  if (
999
1037
  err &&
1000
1038
  /^[^/]*$/.test(item.loader) &&
@@ -1021,8 +1059,18 @@ If changing the source code is not an option there is also a resolve options cal
1021
1059
  if (err) return callback(err);
1022
1060
 
1023
1061
  const parsedResult = this._parseResourceWithoutFragment(result);
1062
+
1063
+ const type = /\.mjs$/i.test(parsedResult.path)
1064
+ ? "module"
1065
+ : /\.cjs$/i.test(parsedResult.path)
1066
+ ? "commonjs"
1067
+ : resolveRequest.descriptionFileData === undefined
1068
+ ? undefined
1069
+ : resolveRequest.descriptionFileData.type;
1070
+
1024
1071
  const resolved = {
1025
1072
  loader: parsedResult.path,
1073
+ type,
1026
1074
  options:
1027
1075
  item.options === undefined
1028
1076
  ? parsedResult.query
@@ -8,7 +8,7 @@
8
8
  const { join, dirname } = require("./util/fs");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
- /** @typedef {function(TODO): void} ModuleReplacer */
11
+ /** @typedef {function(import("./NormalModuleFactory").ResolveData): void} ModuleReplacer */
12
12
 
13
13
  class NormalModuleReplacementPlugin {
14
14
  /**
@@ -43,7 +43,9 @@ class NormalModuleReplacementPlugin {
43
43
  });
44
44
  nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
45
45
  const createData = result.createData;
46
- if (resourceRegExp.test(createData.resource)) {
46
+ if (
47
+ resourceRegExp.test(/** @type {string} */ (createData.resource))
48
+ ) {
47
49
  if (typeof newResource === "function") {
48
50
  newResource(result);
49
51
  } else {
@@ -56,7 +58,7 @@ class NormalModuleReplacementPlugin {
56
58
  } else {
57
59
  createData.resource = join(
58
60
  fs,
59
- dirname(fs, createData.resource),
61
+ dirname(fs, /** @type {string} */ (createData.resource)),
60
62
  newResource
61
63
  );
62
64
  }
@@ -13,7 +13,7 @@ const ModuleFactory = require("./ModuleFactory");
13
13
  class NullFactory extends ModuleFactory {
14
14
  /**
15
15
  * @param {ModuleFactoryCreateData} data data object
16
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
16
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
17
17
  * @returns {void}
18
18
  */
19
19
  create(data, callback) {
@@ -10,6 +10,10 @@ const PrefetchDependency = require("./dependencies/PrefetchDependency");
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
12
  class PrefetchPlugin {
13
+ /**
14
+ * @param {string} context context or request if context is not set
15
+ * @param {string} [request] request
16
+ */
13
17
  constructor(context, request) {
14
18
  if (request) {
15
19
  this.context = context;
@@ -11,9 +11,20 @@ const NormalModule = require("./NormalModule");
11
11
  const createSchemaValidation = require("./util/create-schema-validation");
12
12
  const { contextify } = require("./util/identifier");
13
13
 
14
+ /** @typedef {import("tapable").Tap} Tap */
14
15
  /** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
15
16
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
16
17
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
18
+ /** @typedef {import("./Dependency")} Dependency */
19
+ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
20
+ /** @typedef {import("./Module")} Module */
21
+ /** @typedef {import("./logging/Logger").Logger} Logger */
22
+
23
+ /**
24
+ * @typedef {Object} CountsData
25
+ * @property {number} modulesCount modules count
26
+ * @property {number} dependenciesCount dependencies count
27
+ */
17
28
 
18
29
  const validate = createSchemaValidation(
19
30
  require("../schemas/plugins/ProgressPlugin.check.js"),
@@ -23,14 +34,31 @@ const validate = createSchemaValidation(
23
34
  baseDataPath: "options"
24
35
  }
25
36
  );
37
+
38
+ /**
39
+ * @param {number} a a
40
+ * @param {number} b b
41
+ * @param {number} c c
42
+ * @returns {number} median
43
+ */
26
44
  const median3 = (a, b, c) => {
27
45
  return a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
28
46
  };
29
47
 
48
+ /**
49
+ * @param {boolean | null | undefined} profile need profile
50
+ * @param {Logger} logger logger
51
+ * @returns {defaultHandler} default handler
52
+ */
30
53
  const createDefaultHandler = (profile, logger) => {
31
- /** @type {{ value: string, time: number }[]} */
54
+ /** @type {{ value: string | undefined, time: number }[]} */
32
55
  const lastStateInfo = [];
33
56
 
57
+ /**
58
+ * @param {number} percentage percentage
59
+ * @param {string} msg message
60
+ * @param {...string} args additional arguments
61
+ */
34
62
  const defaultHandler = (percentage, msg, ...args) => {
35
63
  if (profile) {
36
64
  if (percentage === 0) {
@@ -95,18 +123,18 @@ const createDefaultHandler = (profile, logger) => {
95
123
 
96
124
  /**
97
125
  * @callback ReportProgress
98
- * @param {number} p
99
- * @param {...string} [args]
126
+ * @param {number} p percentage
127
+ * @param {...string} args additional arguments
100
128
  * @returns {void}
101
129
  */
102
130
 
103
- /** @type {WeakMap<Compiler,ReportProgress>} */
131
+ /** @type {WeakMap<Compiler, ReportProgress | undefined>} */
104
132
  const progressReporters = new WeakMap();
105
133
 
106
134
  class ProgressPlugin {
107
135
  /**
108
136
  * @param {Compiler} compiler the current compiler
109
- * @returns {ReportProgress} a progress reporter, if any
137
+ * @returns {ReportProgress | undefined} a progress reporter, if any
110
138
  */
111
139
  static getReporter(compiler) {
112
140
  return progressReporters.get(compiler);
@@ -288,6 +316,9 @@ class ProgressPlugin {
288
316
  };
289
317
 
290
318
  // only used when showActiveModules is set
319
+ /**
320
+ * @param {Module} module the module
321
+ */
291
322
  const moduleBuild = module => {
292
323
  const ident = module.identifier();
293
324
  if (ident) {
@@ -297,11 +328,18 @@ class ProgressPlugin {
297
328
  }
298
329
  };
299
330
 
331
+ /**
332
+ * @param {Dependency} entry entry dependency
333
+ * @param {EntryOptions} options options object
334
+ */
300
335
  const entryAdd = (entry, options) => {
301
336
  entriesCount++;
302
337
  if (entriesCount < 5 || entriesCount % 10 === 0) updateThrottled();
303
338
  };
304
339
 
340
+ /**
341
+ * @param {Module} module the module
342
+ */
305
343
  const moduleDone = module => {
306
344
  doneModules++;
307
345
  if (showActiveModules) {
@@ -321,6 +359,10 @@ class ProgressPlugin {
321
359
  if (doneModules < 50 || doneModules % 100 === 0) updateThrottled();
322
360
  };
323
361
 
362
+ /**
363
+ * @param {Dependency} entry entry dependency
364
+ * @param {EntryOptions} options options object
365
+ */
324
366
  const entryDone = (entry, options) => {
325
367
  doneEntries++;
326
368
  update();
@@ -330,6 +372,7 @@ class ProgressPlugin {
330
372
  .getCache("ProgressPlugin")
331
373
  .getItemCache("counts", null);
332
374
 
375
+ /** @type {Promise<CountsData> | undefined} */
333
376
  let cacheGetPromise;
334
377
 
335
378
  compiler.hooks.beforeCompile.tap("ProgressPlugin", () => {
@@ -352,15 +395,17 @@ class ProgressPlugin {
352
395
 
353
396
  compiler.hooks.afterCompile.tapPromise("ProgressPlugin", compilation => {
354
397
  if (compilation.compiler.isChild()) return Promise.resolve();
355
- return cacheGetPromise.then(async oldData => {
356
- if (
357
- !oldData ||
358
- oldData.modulesCount !== modulesCount ||
359
- oldData.dependenciesCount !== dependenciesCount
360
- ) {
361
- await cache.storePromise({ modulesCount, dependenciesCount });
398
+ return /** @type {Promise<CountsData>} */ (cacheGetPromise).then(
399
+ async oldData => {
400
+ if (
401
+ !oldData ||
402
+ oldData.modulesCount !== modulesCount ||
403
+ oldData.dependenciesCount !== dependenciesCount
404
+ ) {
405
+ await cache.storePromise({ modulesCount, dependenciesCount });
406
+ }
362
407
  }
363
- });
408
+ );
364
409
  });
365
410
 
366
411
  compiler.hooks.compilation.tap("ProgressPlugin", compilation => {
@@ -463,9 +508,9 @@ class ProgressPlugin {
463
508
  };
464
509
  const numberOfHooks = Object.keys(hooks).length;
465
510
  Object.keys(hooks).forEach((name, idx) => {
466
- const title = hooks[name];
511
+ const title = hooks[/** @type {keyof typeof hooks} */ (name)];
467
512
  const percentage = (idx / numberOfHooks) * 0.25 + 0.7;
468
- compilation.hooks[name].intercept({
513
+ compilation.hooks[/** @type {keyof typeof hooks} */ (name)].intercept({
469
514
  name: "ProgressPlugin",
470
515
  call() {
471
516
  handler(percentage, "sealing", title);
@@ -500,6 +545,12 @@ class ProgressPlugin {
500
545
  handler(0.65, "building");
501
546
  }
502
547
  });
548
+ /**
549
+ * @param {TODO} hook hook
550
+ * @param {number} progress progress from 0 to 1
551
+ * @param {string} category category
552
+ * @param {string} name name
553
+ */
503
554
  const interceptHook = (hook, progress, category, name) => {
504
555
  hook.intercept({
505
556
  name: "ProgressPlugin",
@@ -516,6 +567,9 @@ class ProgressPlugin {
516
567
  error() {
517
568
  handler(progress, category, name);
518
569
  },
570
+ /**
571
+ * @param {Tap} tap tap
572
+ */
519
573
  tap(tap) {
520
574
  progressReporters.set(compiler, (p, ...args) => {
521
575
  handler(progress, category, name, tap.name, ...args);
@@ -610,4 +664,6 @@ ProgressPlugin.defaultOptions = {
610
664
  entries: true
611
665
  };
612
666
 
667
+ ProgressPlugin.createDefaultHandler = createDefaultHandler;
668
+
613
669
  module.exports = ProgressPlugin;
@@ -5,11 +5,22 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
+ JAVASCRIPT_MODULE_TYPE_ESM
12
+ } = require("./ModuleTypeConstants");
8
13
  const ConstDependency = require("./dependencies/ConstDependency");
9
14
  const ProvidedDependency = require("./dependencies/ProvidedDependency");
10
15
  const { approve } = require("./javascript/JavascriptParserHelpers");
11
16
 
17
+ /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
12
18
  /** @typedef {import("./Compiler")} Compiler */
19
+ /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
20
+ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
21
+ /** @typedef {import("./javascript/JavascriptParser").Range} Range */
22
+
23
+ const PLUGIN_NAME = "ProvidePlugin";
13
24
 
14
25
  class ProvidePlugin {
15
26
  /**
@@ -27,7 +38,7 @@ class ProvidePlugin {
27
38
  apply(compiler) {
28
39
  const definitions = this.definitions;
29
40
  compiler.hooks.compilation.tap(
30
- "ProvidePlugin",
41
+ PLUGIN_NAME,
31
42
  (compilation, { normalModuleFactory }) => {
32
43
  compilation.dependencyTemplates.set(
33
44
  ConstDependency,
@@ -41,6 +52,11 @@ class ProvidePlugin {
41
52
  ProvidedDependency,
42
53
  new ProvidedDependency.Template()
43
54
  );
55
+ /**
56
+ * @param {JavascriptParser} parser the parser
57
+ * @param {JavascriptParserOptions} parserOptions options
58
+ * @returns {void}
59
+ */
44
60
  const handler = (parser, parserOptions) => {
45
61
  Object.keys(definitions).forEach(name => {
46
62
  const request = [].concat(definitions[name]);
@@ -48,11 +64,11 @@ class ProvidePlugin {
48
64
  if (splittedName.length > 0) {
49
65
  splittedName.slice(1).forEach((_, i) => {
50
66
  const name = splittedName.slice(0, i + 1).join(".");
51
- parser.hooks.canRename.for(name).tap("ProvidePlugin", approve);
67
+ parser.hooks.canRename.for(name).tap(PLUGIN_NAME, approve);
52
68
  });
53
69
  }
54
70
 
55
- parser.hooks.expression.for(name).tap("ProvidePlugin", expr => {
71
+ parser.hooks.expression.for(name).tap(PLUGIN_NAME, expr => {
56
72
  const nameIdentifier = name.includes(".")
57
73
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
58
74
  : name;
@@ -60,14 +76,14 @@ class ProvidePlugin {
60
76
  request[0],
61
77
  nameIdentifier,
62
78
  request.slice(1),
63
- expr.range
79
+ /** @type {Range} */ (expr.range)
64
80
  );
65
- dep.loc = expr.loc;
81
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
66
82
  parser.state.module.addDependency(dep);
67
83
  return true;
68
84
  });
69
85
 
70
- parser.hooks.call.for(name).tap("ProvidePlugin", expr => {
86
+ parser.hooks.call.for(name).tap(PLUGIN_NAME, expr => {
71
87
  const nameIdentifier = name.includes(".")
72
88
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
73
89
  : name;
@@ -75,9 +91,9 @@ class ProvidePlugin {
75
91
  request[0],
76
92
  nameIdentifier,
77
93
  request.slice(1),
78
- expr.callee.range
94
+ /** @type {Range} */ (expr.callee.range)
79
95
  );
80
- dep.loc = expr.callee.loc;
96
+ dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
81
97
  parser.state.module.addDependency(dep);
82
98
  parser.walkExpressions(expr.arguments);
83
99
  return true;
@@ -85,14 +101,14 @@ class ProvidePlugin {
85
101
  });
86
102
  };
87
103
  normalModuleFactory.hooks.parser
88
- .for("javascript/auto")
89
- .tap("ProvidePlugin", handler);
104
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
105
+ .tap(PLUGIN_NAME, handler);
90
106
  normalModuleFactory.hooks.parser
91
- .for("javascript/dynamic")
92
- .tap("ProvidePlugin", handler);
107
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
108
+ .tap(PLUGIN_NAME, handler);
93
109
  normalModuleFactory.hooks.parser
94
- .for("javascript/esm")
95
- .tap("ProvidePlugin", handler);
110
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
111
+ .tap(PLUGIN_NAME, handler);
96
112
  }
97
113
  );
98
114
  }
package/lib/RawModule.js CHANGED
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
10
11
  const makeSerializable = require("./util/makeSerializable");
11
12
 
12
13
  /** @typedef {import("webpack-sources").Source} Source */
@@ -22,6 +23,8 @@ const makeSerializable = require("./util/makeSerializable");
22
23
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
23
24
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
24
25
  /** @typedef {import("./WebpackError")} WebpackError */
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/fs").InputFileSystem} InputFileSystem */
27
30
 
@@ -35,7 +38,7 @@ class RawModule extends Module {
35
38
  * @param {ReadonlySet<string>=} runtimeRequirements runtime requirements needed for the source code
36
39
  */
37
40
  constructor(source, identifier, readableIdentifier, runtimeRequirements) {
38
- super("javascript/dynamic", null);
41
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
39
42
  this.sourceStr = source;
40
43
  this.identifierStr = identifier || this.sourceStr;
41
44
  this.readableIdentifierStr = readableIdentifier || this.identifierStr;
@@ -69,7 +72,9 @@ class RawModule extends Module {
69
72
  * @returns {string} a user readable identifier of the module
70
73
  */
71
74
  readableIdentifier(requestShortener) {
72
- return requestShortener.shorten(this.readableIdentifierStr);
75
+ return /** @type {string} */ (
76
+ requestShortener.shorten(this.readableIdentifierStr)
77
+ );
73
78
  }
74
79
 
75
80
  /**
@@ -124,6 +129,9 @@ class RawModule extends Module {
124
129
  super.updateHash(hash, context);
125
130
  }
126
131
 
132
+ /**
133
+ * @param {ObjectSerializerContext} context context
134
+ */
127
135
  serialize(context) {
128
136
  const { write } = context;
129
137
 
@@ -135,6 +143,9 @@ class RawModule extends Module {
135
143
  super.serialize(context);
136
144
  }
137
145
 
146
+ /**
147
+ * @param {ObjectDeserializerContext} context context
148
+ */
138
149
  deserialize(context) {
139
150
  const { read } = context;
140
151
 
@@ -69,7 +69,7 @@ class RecordIdsPlugin {
69
69
  compilation.hooks.recordModules.tap(
70
70
  "RecordIdsPlugin",
71
71
  /**
72
- * @param {Module[]} modules the modules array
72
+ * @param {Iterable<Module>} modules the modules array
73
73
  * @param {Records} records the records object
74
74
  * @returns {void}
75
75
  */
@@ -92,7 +92,7 @@ class RecordIdsPlugin {
92
92
  compilation.hooks.reviveModules.tap(
93
93
  "RecordIdsPlugin",
94
94
  /**
95
- * @param {Module[]} modules the modules array
95
+ * @param {Iterable<Module>} modules the modules array
96
96
  * @param {Records} records the records object
97
97
  * @returns {void}
98
98
  */
@@ -166,7 +166,7 @@ class RecordIdsPlugin {
166
166
  compilation.hooks.recordChunks.tap(
167
167
  "RecordIdsPlugin",
168
168
  /**
169
- * @param {Chunk[]} chunks the chunks array
169
+ * @param {Iterable<Chunk>} chunks the chunks array
170
170
  * @param {Records} records the records object
171
171
  * @returns {void}
172
172
  */
@@ -192,7 +192,7 @@ class RecordIdsPlugin {
192
192
  compilation.hooks.reviveChunks.tap(
193
193
  "RecordIdsPlugin",
194
194
  /**
195
- * @param {Chunk[]} chunks the chunks array
195
+ * @param {Iterable<Chunk>} chunks the chunks array
196
196
  * @param {Records} records the records object
197
197
  * @returns {void}
198
198
  */
@@ -5,13 +5,21 @@
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 ConstDependency = require("./dependencies/ConstDependency");
10
14
  const {
11
15
  toConstantDependency
12
16
  } = require("./javascript/JavascriptParserHelpers");
13
17
 
18
+ /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
14
19
  /** @typedef {import("./Compiler")} Compiler */
20
+ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
21
+
22
+ const PLUGIN_NAME = "RequireJsStuffPlugin";
15
23
 
16
24
  module.exports = class RequireJsStuffPlugin {
17
25
  /**
@@ -21,12 +29,17 @@ module.exports = class RequireJsStuffPlugin {
21
29
  */
22
30
  apply(compiler) {
23
31
  compiler.hooks.compilation.tap(
24
- "RequireJsStuffPlugin",
32
+ PLUGIN_NAME,
25
33
  (compilation, { normalModuleFactory }) => {
26
34
  compilation.dependencyTemplates.set(
27
35
  ConstDependency,
28
36
  new ConstDependency.Template()
29
37
  );
38
+ /**
39
+ * @param {JavascriptParser} parser the parser
40
+ * @param {JavascriptParserOptions} parserOptions options
41
+ * @returns {void}
42
+ */
30
43
  const handler = (parser, parserOptions) => {
31
44
  if (
32
45
  parserOptions.requireJs === undefined ||
@@ -37,27 +50,21 @@ module.exports = class RequireJsStuffPlugin {
37
50
 
38
51
  parser.hooks.call
39
52
  .for("require.config")
40
- .tap(
41
- "RequireJsStuffPlugin",
42
- toConstantDependency(parser, "undefined")
43
- );
53
+ .tap(PLUGIN_NAME, toConstantDependency(parser, "undefined"));
44
54
  parser.hooks.call
45
55
  .for("requirejs.config")
46
- .tap(
47
- "RequireJsStuffPlugin",
48
- toConstantDependency(parser, "undefined")
49
- );
56
+ .tap(PLUGIN_NAME, toConstantDependency(parser, "undefined"));
50
57
 
51
58
  parser.hooks.expression
52
59
  .for("require.version")
53
60
  .tap(
54
- "RequireJsStuffPlugin",
61
+ PLUGIN_NAME,
55
62
  toConstantDependency(parser, JSON.stringify("0.0.0"))
56
63
  );
57
64
  parser.hooks.expression
58
65
  .for("requirejs.onError")
59
66
  .tap(
60
- "RequireJsStuffPlugin",
67
+ PLUGIN_NAME,
61
68
  toConstantDependency(
62
69
  parser,
63
70
  RuntimeGlobals.uncaughtErrorHandler,
@@ -66,11 +73,11 @@ module.exports = class RequireJsStuffPlugin {
66
73
  );
67
74
  };
68
75
  normalModuleFactory.hooks.parser
69
- .for("javascript/auto")
70
- .tap("RequireJsStuffPlugin", handler);
76
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
77
+ .tap(PLUGIN_NAME, handler);
71
78
  normalModuleFactory.hooks.parser
72
- .for("javascript/dynamic")
73
- .tap("RequireJsStuffPlugin", handler);
79
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
80
+ .tap(PLUGIN_NAME, handler);
74
81
  }
75
82
  );
76
83
  }
@@ -188,6 +188,11 @@ exports.createScriptUrl = "__webpack_require__.tu";
188
188
  */
189
189
  exports.getTrustedTypesPolicy = "__webpack_require__.tt";
190
190
 
191
+ /**
192
+ * a flag when a chunk has a fetch priority
193
+ */
194
+ exports.hasFetchPriority = "has fetch priority";
195
+
191
196
  /**
192
197
  * the chunk name of the chunk with the runtime
193
198
  */