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
@@ -11,12 +11,15 @@ const HotUpdateChunk = require("../HotUpdateChunk");
11
11
  const Template = require("../Template");
12
12
  const { getAllChunks } = require("../javascript/ChunkHelpers");
13
13
  const {
14
+ chunkHasJs,
14
15
  getCompilationHooks,
15
16
  getChunkFilenameTemplate
16
17
  } = require("../javascript/JavascriptModulesPlugin");
17
18
  const { updateHashForEntryStartup } = require("../javascript/StartupHelpers");
18
19
 
20
+ /** @typedef {import("../Chunk")} Chunk */
19
21
  /** @typedef {import("../Compiler")} Compiler */
22
+ /** @typedef {import("../Entrypoint")} Entrypoint */
20
23
 
21
24
  class ModuleChunkFormatPlugin {
22
25
  /**
@@ -72,7 +75,9 @@ class ModuleChunkFormatPlugin {
72
75
  chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)
73
76
  );
74
77
  if (entries.length > 0) {
75
- const runtimeChunk = entries[0][1].getRuntimeChunk();
78
+ const runtimeChunk =
79
+ /** @type {Entrypoint[][]} */
80
+ (entries)[0][1].getRuntimeChunk();
76
81
  const currentOutputName = compilation
77
82
  .getPath(
78
83
  getChunkFilenameTemplate(chunk, compilation.outputOptions),
@@ -86,6 +91,10 @@ class ModuleChunkFormatPlugin {
86
91
  // remove filename, we only need the directory
87
92
  currentOutputName.pop();
88
93
 
94
+ /**
95
+ * @param {Chunk} chunk the chunk
96
+ * @returns {string} the relative path
97
+ */
89
98
  const getRelativePath = chunk => {
90
99
  const baseOutputName = currentOutputName.slice();
91
100
  const chunkOutputName = compilation
@@ -122,15 +131,15 @@ class ModuleChunkFormatPlugin {
122
131
  entrySource.add(source);
123
132
  entrySource.add(";\n\n// load runtime\n");
124
133
  entrySource.add(
125
- `import __webpack_require__ from ${JSON.stringify(
126
- getRelativePath(runtimeChunk)
134
+ `import ${RuntimeGlobals.require} from ${JSON.stringify(
135
+ getRelativePath(/** @type {Chunk} */ (runtimeChunk))
127
136
  )};\n`
128
137
  );
129
138
 
130
139
  const startupSource = new ConcatSource();
131
140
  startupSource.add(
132
141
  `var __webpack_exec__ = ${runtimeTemplate.returningFunction(
133
- `__webpack_require__(${RuntimeGlobals.entryModuleId} = moduleId)`,
142
+ `${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
134
143
  "moduleId"
135
144
  )}\n`
136
145
  );
@@ -142,12 +151,16 @@ class ModuleChunkFormatPlugin {
142
151
  const final = i + 1 === entries.length;
143
152
  const moduleId = chunkGraph.getModuleId(module);
144
153
  const chunks = getAllChunks(
145
- entrypoint,
146
- runtimeChunk,
154
+ /** @type {Entrypoint} */ (entrypoint),
155
+ /** @type {Chunk} */ (runtimeChunk),
147
156
  undefined
148
157
  );
149
158
  for (const chunk of chunks) {
150
- if (loadedChunks.has(chunk)) continue;
159
+ if (
160
+ loadedChunks.has(chunk) ||
161
+ !chunkHasJs(chunk, chunkGraph)
162
+ )
163
+ continue;
151
164
  loadedChunks.add(chunk);
152
165
  startupSource.add(
153
166
  `import * as __webpack_chunk_${index}__ from ${JSON.stringify(
@@ -161,7 +174,7 @@ class ModuleChunkFormatPlugin {
161
174
  }
162
175
  startupSource.add(
163
176
  `${
164
- final ? "var __webpack_exports__ = " : ""
177
+ final ? `var ${RuntimeGlobals.exports} = ` : ""
165
178
  }__webpack_exec__(${JSON.stringify(moduleId)});\n`
166
179
  );
167
180
  }
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const ExportWebpackRequireRuntimeModule = require("./ExportWebpackRequireRuntimeModule");
10
10
  const ModuleChunkLoadingRuntimeModule = require("./ModuleChunkLoadingRuntimeModule");
11
11
 
12
+ /** @typedef {import("../Chunk")} Chunk */
12
13
  /** @typedef {import("../Compiler")} Compiler */
13
14
 
14
15
  class ModuleChunkLoadingPlugin {
@@ -22,6 +23,10 @@ class ModuleChunkLoadingPlugin {
22
23
  "ModuleChunkLoadingPlugin",
23
24
  compilation => {
24
25
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
26
+ /**
27
+ * @param {Chunk} chunk chunk to check
28
+ * @returns {boolean} true, when the plugin is enabled for the chunk
29
+ */
25
30
  const isEnabledForChunk = chunk => {
26
31
  const options = chunk.getEntryOptions();
27
32
  const chunkLoading =
@@ -31,6 +36,10 @@ class ModuleChunkLoadingPlugin {
31
36
  return chunkLoading === "import";
32
37
  };
33
38
  const onceForChunkSet = new WeakSet();
39
+ /**
40
+ * @param {Chunk} chunk chunk to check
41
+ * @param {Set<string>} set runtime requirements
42
+ */
34
43
  const handler = (chunk, set) => {
35
44
  if (onceForChunkSet.has(chunk)) return;
36
45
  onceForChunkSet.add(chunk);
@@ -18,6 +18,7 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
18
18
  const { getUndoPath } = require("../util/identifier");
19
19
 
20
20
  /** @typedef {import("../Chunk")} Chunk */
21
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
21
22
 
22
23
  /**
23
24
  * @typedef {Object} JsonpCompilationPluginHooks
@@ -50,6 +51,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
50
51
  return hooks;
51
52
  }
52
53
 
54
+ /**
55
+ * @param {ReadonlySet<string>} runtimeRequirements runtime requirements
56
+ */
53
57
  constructor(runtimeRequirements) {
54
58
  super("import chunk loading", RuntimeModule.STAGE_ATTACH);
55
59
  this._runtimeRequirements = runtimeRequirements;
@@ -66,21 +70,22 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
66
70
  if (options && options.baseUri) {
67
71
  return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
68
72
  }
73
+ const compilation = /** @type {Compilation} */ (this.compilation);
69
74
  const {
70
- compilation: {
71
- outputOptions: { importMetaName }
72
- }
73
- } = this;
75
+ outputOptions: { importMetaName }
76
+ } = compilation;
74
77
  return `${RuntimeGlobals.baseURI} = new URL(${JSON.stringify(
75
78
  rootOutputDir
76
79
  )}, ${importMetaName}.url);`;
77
80
  }
78
81
 
79
82
  /**
80
- * @returns {string} runtime code
83
+ * @returns {string | null} runtime code
81
84
  */
82
85
  generate() {
83
- const { compilation, chunk, chunkGraph } = this;
86
+ const compilation = /** @type {Compilation} */ (this.compilation);
87
+ const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
88
+ const chunk = /** @type {Chunk} */ (this.chunk);
84
89
  const {
85
90
  runtimeTemplate,
86
91
  outputOptions: { importFunctionName }
@@ -103,8 +108,8 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
103
108
  const hasJsMatcher = compileBooleanMatcher(conditionMap);
104
109
  const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
105
110
 
106
- const outputName = this.compilation.getPath(
107
- getChunkFilenameTemplate(chunk, this.compilation.outputOptions),
111
+ const outputName = compilation.getPath(
112
+ getChunkFilenameTemplate(chunk, compilation.outputOptions),
108
113
  {
109
114
  chunk,
110
115
  contentHashType: "javascript"
@@ -112,7 +117,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
112
117
  );
113
118
  const rootOutputDir = getUndoPath(
114
119
  outputName,
115
- this.compilation.outputOptions.path,
120
+ /** @type {string} */ (compilation.outputOptions.path),
116
121
  true
117
122
  );
118
123
 
@@ -127,7 +132,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
127
132
  "",
128
133
  "// object to store loaded and loading chunks",
129
134
  "// undefined = chunk not loaded, null = chunk preloaded/prefetched",
130
- "// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
135
+ "// [resolve, Promise] = chunk loading, 0 = chunk loaded",
131
136
  `var installedChunks = ${
132
137
  stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
133
138
  }{`,
@@ -156,7 +161,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
156
161
  "}"
157
162
  ]),
158
163
  "}",
159
- "if(runtime) runtime(__webpack_require__);",
164
+ `if(runtime) runtime(${RuntimeGlobals.require});`,
160
165
  "for(;i < ids.length; i++) {",
161
166
  Template.indent([
162
167
  "chunkId = ids[i];",
@@ -210,7 +215,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
210
215
  )})])`,
211
216
  `promises.push(installedChunkData[1] = promise);`
212
217
  ]),
213
- "} else installedChunks[chunkId] = 0;"
218
+ hasJsMatcher === true
219
+ ? "}"
220
+ : "} else installedChunks[chunkId] = 0;"
214
221
  ]),
215
222
  "}"
216
223
  ]),
@@ -14,7 +14,7 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
14
14
  super("hot module replacement", RuntimeModule.STAGE_BASIC);
15
15
  }
16
16
  /**
17
- * @returns {string} runtime code
17
+ * @returns {string | null} runtime code
18
18
  */
19
19
  generate() {
20
20
  return Template.getFunctionContent(
@@ -10,6 +10,9 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
10
10
  const Dependency = require("../Dependency");
11
11
  const Module = require("../Module");
12
12
  const ModuleFactory = require("../ModuleFactory");
13
+ const {
14
+ WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY
15
+ } = require("../ModuleTypeConstants");
13
16
  const RuntimeGlobals = require("../RuntimeGlobals");
14
17
  const Template = require("../Template");
15
18
  const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
@@ -95,7 +98,11 @@ registerNotSerializable(LazyCompilationDependency);
95
98
 
96
99
  class LazyCompilationProxyModule extends Module {
97
100
  constructor(context, originalModule, request, client, data, active) {
98
- super("lazy-compilation-proxy", context, originalModule.layer);
101
+ super(
102
+ WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY,
103
+ context,
104
+ originalModule.layer
105
+ );
99
106
  this.originalModule = originalModule;
100
107
  this.request = request;
101
108
  this.client = client;
@@ -107,7 +114,7 @@ class LazyCompilationProxyModule extends Module {
107
114
  * @returns {string} a unique identifier of the module
108
115
  */
109
116
  identifier() {
110
- return `lazy-compilation-proxy|${this.originalModule.identifier()}`;
117
+ return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}|${this.originalModule.identifier()}`;
111
118
  }
112
119
 
113
120
  /**
@@ -115,7 +122,7 @@ class LazyCompilationProxyModule extends Module {
115
122
  * @returns {string} a user readable identifier of the module
116
123
  */
117
124
  readableIdentifier(requestShortener) {
118
- return `lazy-compilation-proxy ${this.originalModule.readableIdentifier(
125
+ return `${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY} ${this.originalModule.readableIdentifier(
119
126
  requestShortener
120
127
  )}`;
121
128
  }
@@ -142,7 +149,9 @@ class LazyCompilationProxyModule extends Module {
142
149
  * @returns {string | null} an identifier for library inclusion
143
150
  */
144
151
  libIdent(options) {
145
- return `${this.originalModule.libIdent(options)}!lazy-compilation-proxy`;
152
+ return `${this.originalModule.libIdent(
153
+ options
154
+ )}!${WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY}`;
146
155
  }
147
156
 
148
157
  /**
@@ -294,7 +303,7 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
294
303
 
295
304
  /**
296
305
  * @param {ModuleFactoryCreateData} data data object
297
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
306
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
298
307
  * @returns {void}
299
308
  */
300
309
  create(data, callback) {
@@ -13,7 +13,18 @@ const {
13
13
 
14
14
  /** @typedef {import("../Compiler")} Compiler */
15
15
 
16
+ /**
17
+ * @typedef {Object} ChunkModuleIdRangePluginOptions
18
+ * @property {string} name the chunk name
19
+ * @property {("index" | "index2" | "preOrderIndex" | "postOrderIndex")=} order order
20
+ * @property {number=} start start id
21
+ * @property {number=} end end id
22
+ */
23
+
16
24
  class ChunkModuleIdRangePlugin {
25
+ /**
26
+ * @param {ChunkModuleIdRangePluginOptions} options options object
27
+ */
17
28
  constructor(options) {
18
29
  this.options = options;
19
30
  }
@@ -15,9 +15,18 @@ const {
15
15
  /** @typedef {import("../Compiler")} Compiler */
16
16
  /** @typedef {import("../Module")} Module */
17
17
 
18
+ /**
19
+ * @typedef {Object} DeterministicChunkIdsPluginOptions
20
+ * @property {string=} context context for ids
21
+ * @property {number=} maxLength maximum length of ids
22
+ */
23
+
18
24
  class DeterministicChunkIdsPlugin {
19
- constructor(options) {
20
- this.options = options || {};
25
+ /**
26
+ * @param {DeterministicChunkIdsPluginOptions} [options] options
27
+ */
28
+ constructor(options = {}) {
29
+ this.options = options;
21
30
  }
22
31
 
23
32
  /**
@@ -17,15 +17,19 @@ const {
17
17
  /** @typedef {import("../Compiler")} Compiler */
18
18
  /** @typedef {import("../Module")} Module */
19
19
 
20
+ /**
21
+ * @typedef {Object} DeterministicModuleIdsPluginOptions
22
+ * @property {string=} context context relative to which module identifiers are computed
23
+ * @property {function(Module): boolean=} test selector function for modules
24
+ * @property {number=} maxLength maximum id length in digits (used as starting point)
25
+ * @property {number=} salt hash salt for ids
26
+ * @property {boolean=} fixedLength do not increase the maxLength to find an optimal id space size
27
+ * @property {boolean=} failOnConflict throw an error when id conflicts occur (instead of rehashing)
28
+ */
29
+
20
30
  class DeterministicModuleIdsPlugin {
21
31
  /**
22
- * @param {Object} options options
23
- * @param {string=} options.context context relative to which module identifiers are computed
24
- * @param {function(Module): boolean=} options.test selector function for modules
25
- * @param {number=} options.maxLength maximum id length in digits (used as starting point)
26
- * @param {number=} options.salt hash salt for ids
27
- * @param {boolean=} options.fixedLength do not increase the maxLength to find an optimal id space size
28
- * @param {boolean=} options.failOnConflict throw an error when id conflicts occur (instead of rehashing)
32
+ * @param {DeterministicModuleIdsPluginOptions} [options] options
29
33
  */
30
34
  constructor(options = {}) {
31
35
  this.options = options;
@@ -16,6 +16,7 @@ const {
16
16
  } = require("./IdHelpers");
17
17
 
18
18
  /** @typedef {import("../../declarations/plugins/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
19
+ /** @typedef {import("../Compiler")} Compiler */
19
20
 
20
21
  const validate = createSchemaValidation(
21
22
  require("../../schemas/plugins/HashedModuleIdsPlugin.check.js"),
@@ -35,7 +36,7 @@ class HashedModuleIdsPlugin {
35
36
 
36
37
  /** @type {HashedModuleIdsPluginOptions} */
37
38
  this.options = {
38
- context: null,
39
+ context: undefined,
39
40
  hashFunction: "md4",
40
41
  hashDigest: "base64",
41
42
  hashDigestLength: 4,
@@ -43,6 +44,11 @@ class HashedModuleIdsPlugin {
43
44
  };
44
45
  }
45
46
 
47
+ /**
48
+ * Apply the plugin
49
+ * @param {Compiler} compiler the compiler instance
50
+ * @returns {void}
51
+ */
46
52
  apply(compiler) {
47
53
  const options = this.options;
48
54
  compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
@@ -64,7 +70,8 @@ class HashedModuleIdsPlugin {
64
70
  hash.digest(options.hashDigest)
65
71
  );
66
72
  let len = options.hashDigestLength;
67
- while (usedIds.has(hashId.slice(0, len))) len++;
73
+ while (usedIds.has(hashId.slice(0, len)))
74
+ /** @type {number} */ (len)++;
68
75
  const moduleId = hashId.slice(0, len);
69
76
  chunkGraph.setModuleId(module, moduleId);
70
77
  usedIds.add(moduleId);
@@ -427,6 +427,9 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
427
427
  let nextId = 0;
428
428
  let assignId;
429
429
  if (usedIds.size > 0) {
430
+ /**
431
+ * @param {Module} module the module
432
+ */
430
433
  assignId = module => {
431
434
  if (chunkGraph.getModuleId(module) === null) {
432
435
  while (usedIds.has(nextId + "")) nextId++;
@@ -434,6 +437,9 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
434
437
  }
435
438
  };
436
439
  } else {
440
+ /**
441
+ * @param {Module} module the module
442
+ */
437
443
  assignId = module => {
438
444
  if (chunkGraph.getModuleId(module) === null) {
439
445
  chunkGraph.setModuleId(module, nextId++);
@@ -14,11 +14,21 @@ const {
14
14
  assignAscendingChunkIds
15
15
  } = require("./IdHelpers");
16
16
 
17
+ /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
17
18
  /** @typedef {import("../Chunk")} Chunk */
18
19
  /** @typedef {import("../Compiler")} Compiler */
19
20
  /** @typedef {import("../Module")} Module */
20
21
 
22
+ /**
23
+ * @typedef {Object} NamedChunkIdsPluginOptions
24
+ * @property {string} [context] context
25
+ * @property {string} [delimiter] delimiter
26
+ */
27
+
21
28
  class NamedChunkIdsPlugin {
29
+ /**
30
+ * @param {NamedChunkIdsPluginOptions=} options options
31
+ */
22
32
  constructor(options) {
23
33
  this.delimiter = (options && options.delimiter) || "-";
24
34
  this.context = options && options.context;
@@ -31,7 +41,9 @@ class NamedChunkIdsPlugin {
31
41
  */
32
42
  apply(compiler) {
33
43
  compiler.hooks.compilation.tap("NamedChunkIdsPlugin", compilation => {
34
- const { hashFunction } = compilation.outputOptions;
44
+ const hashFunction =
45
+ /** @type {NonNullable<Output["hashFunction"]>} */
46
+ (compilation.outputOptions.hashFunction);
35
47
  compilation.hooks.chunkIds.tap("NamedChunkIdsPlugin", chunks => {
36
48
  const chunkGraph = compilation.chunkGraph;
37
49
  const context = this.context ? this.context : compiler.context;
@@ -14,12 +14,21 @@ const {
14
14
  assignAscendingModuleIds
15
15
  } = require("./IdHelpers");
16
16
 
17
+ /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
17
18
  /** @typedef {import("../Compiler")} Compiler */
18
19
  /** @typedef {import("../Module")} Module */
19
20
 
21
+ /**
22
+ * @typedef {Object} NamedModuleIdsPluginOptions
23
+ * @property {string} [context] context
24
+ */
25
+
20
26
  class NamedModuleIdsPlugin {
21
- constructor(options) {
22
- this.options = options || {};
27
+ /**
28
+ * @param {NamedModuleIdsPluginOptions} [options] options
29
+ */
30
+ constructor(options = {}) {
31
+ this.options = options;
23
32
  }
24
33
 
25
34
  /**
@@ -30,7 +39,9 @@ class NamedModuleIdsPlugin {
30
39
  apply(compiler) {
31
40
  const { root } = compiler;
32
41
  compiler.hooks.compilation.tap("NamedModuleIdsPlugin", compilation => {
33
- const { hashFunction } = compilation.outputOptions;
42
+ const hashFunction =
43
+ /** @type {NonNullable<Output["hashFunction"]>} */
44
+ (compilation.outputOptions.hashFunction);
34
45
  compilation.hooks.moduleIds.tap("NamedModuleIdsPlugin", () => {
35
46
  const chunkGraph = compilation.chunkGraph;
36
47
  const context = this.options.context
@@ -60,8 +60,12 @@ class OccurrenceChunkIdsPlugin {
60
60
 
61
61
  const chunksInOccurrenceOrder = Array.from(chunks).sort((a, b) => {
62
62
  if (prioritiseInitial) {
63
- const aEntryOccurs = occursInInitialChunksMap.get(a);
64
- const bEntryOccurs = occursInInitialChunksMap.get(b);
63
+ const aEntryOccurs =
64
+ /** @type {number} */
65
+ (occursInInitialChunksMap.get(a));
66
+ const bEntryOccurs =
67
+ /** @type {number} */
68
+ (occursInInitialChunksMap.get(b));
65
69
  if (aEntryOccurs > bEntryOccurs) return -1;
66
70
  if (aEntryOccurs < bEntryOccurs) return 1;
67
71
  }
@@ -81,7 +81,7 @@ class OccurrenceModuleIdsPlugin {
81
81
  ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
82
82
  if (!originModule) continue;
83
83
  if (!connections.some(c => c.isTargetActive(undefined))) continue;
84
- sum += initialChunkChunkMap.get(originModule);
84
+ sum += initialChunkChunkMap.get(originModule) || 0;
85
85
  }
86
86
  return sum;
87
87
  };
@@ -50,7 +50,7 @@ class SyncModuleIdsPlugin {
50
50
  }
51
51
  return callback();
52
52
  }
53
- const json = JSON.parse(buffer.toString());
53
+ const json = JSON.parse(/** @type {Buffer} */ (buffer).toString());
54
54
  data = new Map();
55
55
  for (const key of Object.keys(json)) {
56
56
  data.set(key, json[key]);
@@ -63,6 +63,7 @@ class SyncModuleIdsPlugin {
63
63
  if (this._write) {
64
64
  compiler.hooks.emitRecords.tapAsync(plugin, callback => {
65
65
  if (!data || !dataChanged) return callback();
66
+ /** @type {Object<string, string | number>} */
66
67
  const json = {};
67
68
  const sorted = Array.from(data).sort(([a], [b]) => (a < b ? -1 : 1));
68
69
  for (const [key, value] of sorted) {
@@ -98,7 +99,7 @@ class SyncModuleIdsPlugin {
98
99
  err.module = module;
99
100
  compilation.errors.push(err);
100
101
  }
101
- chunkGraph.setModuleId(module, id);
102
+ chunkGraph.setModuleId(module, /** @type {string | number} */ (id));
102
103
  usedIds.add(idAsString);
103
104
  }
104
105
  });
package/lib/index.js CHANGED
@@ -11,8 +11,14 @@ const memoize = require("./util/memoize");
11
11
  /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
12
12
  /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
13
13
  /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
14
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
15
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
16
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
17
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
18
+ /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
14
19
  /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
15
20
  /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
21
+ /** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
16
22
  /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
17
23
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
18
24
  /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
@@ -25,12 +31,14 @@ const memoize = require("./util/memoize");
25
31
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
26
32
  /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
27
33
  /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
34
+ /** @typedef {import("./ChunkGroup")} ChunkGroup */
28
35
  /** @typedef {import("./Compilation").Asset} Asset */
29
36
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
30
37
  /** @typedef {import("./Compilation").EntryOptions} EntryOptions */
31
38
  /** @typedef {import("./Compilation").PathData} PathData */
32
39
  /** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
33
40
  /** @typedef {import("./MultiStats")} MultiStats */
41
+ /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
34
42
  /** @typedef {import("./Parser").ParserState} ParserState */
35
43
  /** @typedef {import("./ResolverFactory").ResolvePluginInstance} ResolvePluginInstance */
36
44
  /** @typedef {import("./ResolverFactory").Resolver} Resolver */
@@ -84,8 +84,8 @@ class ArrayPushCallbackChunkFormatPlugin {
84
84
  if (runtimeModules.length > 0 || entries.length > 0) {
85
85
  const runtime = new ConcatSource(
86
86
  (runtimeTemplate.supportsArrowFunction()
87
- ? "__webpack_require__ =>"
88
- : "function(__webpack_require__)") +
87
+ ? `${RuntimeGlobals.require} =>`
88
+ : `function(${RuntimeGlobals.require})`) +
89
89
  " { // webpackRuntimeModules\n"
90
90
  );
91
91
  if (runtimeModules.length > 0) {
@@ -121,7 +121,7 @@ class ArrayPushCallbackChunkFormatPlugin {
121
121
  .getChunkRuntimeRequirements(chunk)
122
122
  .has(RuntimeGlobals.returnExportsFromRuntime)
123
123
  ) {
124
- runtime.add("return __webpack_exports__;\n");
124
+ runtime.add(`return ${RuntimeGlobals.exports};\n`);
125
125
  }
126
126
  }
127
127
  runtime.add("}\n");