webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -10,11 +10,13 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
10
10
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
11
11
  /** @typedef {import("./Compilation")} Compilation */
12
12
 
13
+ const PLUGIN_NAME = "SourceMapDevToolModuleOptionsPlugin";
14
+
13
15
  class SourceMapDevToolModuleOptionsPlugin {
14
16
  /**
15
- * @param {SourceMapDevToolPluginOptions} options options
17
+ * @param {SourceMapDevToolPluginOptions=} options options
16
18
  */
17
- constructor(options) {
19
+ constructor(options = {}) {
18
20
  this.options = options;
19
21
  }
20
22
 
@@ -25,34 +27,22 @@ class SourceMapDevToolModuleOptionsPlugin {
25
27
  apply(compilation) {
26
28
  const options = this.options;
27
29
  if (options.module !== false) {
28
- compilation.hooks.buildModule.tap(
29
- "SourceMapDevToolModuleOptionsPlugin",
30
- module => {
31
- module.useSourceMap = true;
32
- }
33
- );
34
- compilation.hooks.runtimeModule.tap(
35
- "SourceMapDevToolModuleOptionsPlugin",
36
- module => {
37
- module.useSourceMap = true;
38
- }
39
- );
30
+ compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
31
+ module.useSourceMap = true;
32
+ });
33
+ compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
34
+ module.useSourceMap = true;
35
+ });
40
36
  } else {
41
- compilation.hooks.buildModule.tap(
42
- "SourceMapDevToolModuleOptionsPlugin",
43
- module => {
44
- module.useSimpleSourceMap = true;
45
- }
46
- );
47
- compilation.hooks.runtimeModule.tap(
48
- "SourceMapDevToolModuleOptionsPlugin",
49
- module => {
50
- module.useSimpleSourceMap = true;
51
- }
52
- );
37
+ compilation.hooks.buildModule.tap(PLUGIN_NAME, (module) => {
38
+ module.useSimpleSourceMap = true;
39
+ });
40
+ compilation.hooks.runtimeModule.tap(PLUGIN_NAME, (module) => {
41
+ module.useSimpleSourceMap = true;
42
+ });
53
43
  }
54
44
  JavascriptModulesPlugin.getCompilationHooks(compilation).useSourceMap.tap(
55
- "SourceMapDevToolModuleOptionsPlugin",
45
+ PLUGIN_NAME,
56
46
  () => true
57
47
  );
58
48
  }
@@ -13,28 +13,26 @@ const ProgressPlugin = require("./ProgressPlugin");
13
13
  const SourceMapDevToolModuleOptionsPlugin = require("./SourceMapDevToolModuleOptionsPlugin");
14
14
  const createSchemaValidation = require("./util/create-schema-validation");
15
15
  const createHash = require("./util/createHash");
16
- const { relative, dirname } = require("./util/fs");
16
+ const { dirname, relative } = require("./util/fs");
17
17
  const generateDebugId = require("./util/generateDebugId");
18
18
  const { makePathsAbsolute } = require("./util/identifier");
19
19
 
20
20
  /** @typedef {import("webpack-sources").MapOptions} MapOptions */
21
21
  /** @typedef {import("webpack-sources").Source} Source */
22
22
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
23
- /** @typedef {import("./Cache").Etag} Etag */
23
+ /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").Rules} Rules */
24
24
  /** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */
25
25
  /** @typedef {import("./Chunk")} Chunk */
26
26
  /** @typedef {import("./Compilation").Asset} Asset */
27
27
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
28
28
  /** @typedef {import("./Compiler")} Compiler */
29
29
  /** @typedef {import("./Module")} Module */
30
- /** @typedef {import("./NormalModule").SourceMap} SourceMap */
30
+ /** @typedef {import("./NormalModule").RawSourceMap} RawSourceMap */
31
31
  /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
32
- /** @typedef {import("./util/Hash")} Hash */
33
- /** @typedef {import("./util/createHash").Algorithm} Algorithm */
34
32
  /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
35
33
 
36
34
  const validate = createSchemaValidation(
37
- require("../schemas/plugins/SourceMapDevToolPlugin.check.js"),
35
+ require("../schemas/plugins/SourceMapDevToolPlugin.check"),
38
36
  () => require("../schemas/plugins/SourceMapDevToolPlugin.json"),
39
37
  {
40
38
  name: "SourceMap DevTool Plugin",
@@ -48,7 +46,7 @@ const validate = createSchemaValidation(
48
46
  * @property {(string | Module)[]} modules
49
47
  * @property {string} source
50
48
  * @property {string} file
51
- * @property {SourceMap} sourceMap
49
+ * @property {RawSourceMap} sourceMap
52
50
  * @property {ItemCacheFacade} cacheItem cache item
53
51
  */
54
52
 
@@ -66,7 +64,7 @@ const URL_FORMATTING_REGEXP = /^\n\/\/(.*)$/;
66
64
  * @param {RegExp} regexp Stateful Regular Expression to be reset
67
65
  * @returns {void}
68
66
  */
69
- const resetRegexpState = regexp => {
67
+ const resetRegexpState = (regexp) => {
70
68
  regexp.lastIndex = -1;
71
69
  };
72
70
 
@@ -75,7 +73,7 @@ const resetRegexpState = regexp => {
75
73
  * @param {string} str String to quote
76
74
  * @returns {string} Escaped string
77
75
  */
78
- const quoteMeta = str => str.replace(METACHARACTERS_REGEXP, "\\$&");
76
+ const quoteMeta = (str) => str.replace(METACHARACTERS_REGEXP, "\\$&");
79
77
 
80
78
  /**
81
79
  * Creating {@link SourceMapTask} for given file
@@ -96,24 +94,24 @@ const getTaskForFile = (
96
94
  cacheItem
97
95
  ) => {
98
96
  let source;
99
- /** @type {SourceMap} */
97
+ /** @type {RawSourceMap} */
100
98
  let sourceMap;
101
99
  /**
102
100
  * Check if asset can build source map
103
101
  */
104
102
  if (asset.sourceAndMap) {
105
103
  const sourceAndMap = asset.sourceAndMap(options);
106
- sourceMap = /** @type {SourceMap} */ (sourceAndMap.map);
104
+ sourceMap = /** @type {RawSourceMap} */ (sourceAndMap.map);
107
105
  source = sourceAndMap.source;
108
106
  } else {
109
- sourceMap = /** @type {SourceMap} */ (asset.map(options));
107
+ sourceMap = /** @type {RawSourceMap} */ (asset.map(options));
110
108
  source = asset.source();
111
109
  }
112
110
  if (!sourceMap || typeof source !== "string") return;
113
- const context = /** @type {string} */ (compilation.options.context);
111
+ const context = compilation.options.context;
114
112
  const root = compilation.compiler.root;
115
113
  const cachedAbsolutify = makePathsAbsolute.bindContextCache(context, root);
116
- const modules = sourceMap.sources.map(source => {
114
+ const modules = sourceMap.sources.map((source) => {
117
115
  if (!source.startsWith("webpack://")) return source;
118
116
  source = cachedAbsolutify(source.slice(10));
119
117
  const module = compilation.findModule(source);
@@ -131,9 +129,11 @@ const getTaskForFile = (
131
129
  };
132
130
  };
133
131
 
132
+ const PLUGIN_NAME = "SourceMapDevToolPlugin";
133
+
134
134
  class SourceMapDevToolPlugin {
135
135
  /**
136
- * @param {SourceMapDevToolPluginOptions} [options] options object
136
+ * @param {SourceMapDevToolPluginOptions=} options options object
137
137
  * @throws {Error} throws error, if got more than 1 arguments
138
138
  */
139
139
  constructor(options = {}) {
@@ -146,16 +146,12 @@ class SourceMapDevToolPlugin {
146
146
  ? false
147
147
  : // eslint-disable-next-line no-useless-concat
148
148
  options.append || "\n//# source" + "MappingURL=[url]";
149
- /** @type {string | Function} */
150
149
  this.moduleFilenameTemplate =
151
150
  options.moduleFilenameTemplate || "webpack://[namespace]/[resourcePath]";
152
- /** @type {string | Function} */
153
151
  this.fallbackModuleFilenameTemplate =
154
152
  options.fallbackModuleFilenameTemplate ||
155
153
  "webpack://[namespace]/[resourcePath]?[hash]";
156
- /** @type {string} */
157
154
  this.namespace = options.namespace || "";
158
- /** @type {SourceMapDevToolPluginOptions} */
159
155
  this.options = options;
160
156
  }
161
157
 
@@ -165,9 +161,9 @@ class SourceMapDevToolPlugin {
165
161
  * @returns {void}
166
162
  */
167
163
  apply(compiler) {
168
- const outputFs = /** @type {OutputFileSystem} */ (
169
- compiler.outputFileSystem
170
- );
164
+ const outputFs =
165
+ /** @type {OutputFileSystem} */
166
+ (compiler.outputFileSystem);
171
167
  const sourceMapFilename = this.sourceMapFilename;
172
168
  const sourceMappingURLComment = this.sourceMappingURLComment;
173
169
  const moduleFilenameTemplate = this.moduleFilenameTemplate;
@@ -182,24 +178,20 @@ class SourceMapDevToolPlugin {
182
178
  options
183
179
  );
184
180
 
185
- compiler.hooks.compilation.tap("SourceMapDevToolPlugin", compilation => {
181
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
186
182
  new SourceMapDevToolModuleOptionsPlugin(options).apply(compilation);
187
183
 
188
184
  compilation.hooks.processAssets.tapAsync(
189
185
  {
190
- name: "SourceMapDevToolPlugin",
186
+ name: PLUGIN_NAME,
191
187
  stage: Compilation.PROCESS_ASSETS_STAGE_DEV_TOOLING,
192
188
  additionalAssets: true
193
189
  },
194
190
  (assets, callback) => {
195
191
  const chunkGraph = compilation.chunkGraph;
196
- const cache = compilation.getCache("SourceMapDevToolPlugin");
192
+ const cache = compilation.getCache(PLUGIN_NAME);
197
193
  /** @type {Map<string | Module, string>} */
198
194
  const moduleToSourceNameMapping = new Map();
199
- /**
200
- * @type {Function}
201
- * @returns {void}
202
- */
203
195
  const reportProgress =
204
196
  ProgressPlugin.getReporter(compilation.compiler) || (() => {});
205
197
 
@@ -277,8 +269,9 @@ class SourceMapDevToolPlugin {
277
269
  /**
278
270
  * Add file to chunk, if not presented there
279
271
  */
280
- if (cachedFile !== file && chunk !== undefined)
272
+ if (cachedFile !== file && chunk !== undefined) {
281
273
  chunk.auxiliaryFiles.add(cachedFile);
274
+ }
282
275
  }
283
276
 
284
277
  reportProgress(
@@ -354,7 +347,7 @@ class SourceMapDevToolPlugin {
354
347
  callback();
355
348
  });
356
349
  },
357
- err => {
350
+ (err) => {
358
351
  if (err) {
359
352
  return callback(err);
360
353
  }
@@ -367,15 +360,15 @@ class SourceMapDevToolPlugin {
367
360
 
368
361
  /**
369
362
  * all modules in defined order (longest identifier first)
370
- * @type {Array<string | Module>}
363
+ * @type {(string | Module)[]}
371
364
  */
372
- const allModules = Array.from(
373
- moduleToSourceNameMapping.keys()
374
- ).sort((a, b) => {
375
- const ai = typeof a === "string" ? a : a.identifier();
376
- const bi = typeof b === "string" ? b : b.identifier();
377
- return ai.length - bi.length;
378
- });
365
+ const allModules = [...moduleToSourceNameMapping.keys()].sort(
366
+ (a, b) => {
367
+ const ai = typeof a === "string" ? a : a.identifier();
368
+ const bi = typeof b === "string" ? b : b.identifier();
369
+ return ai.length - bi.length;
370
+ }
371
+ );
379
372
 
380
373
  // find modules with conflicting source names
381
374
  for (let idx = 0; idx < allModules.length; idx++) {
@@ -437,10 +430,29 @@ class SourceMapDevToolPlugin {
437
430
  "attach SourceMap"
438
431
  );
439
432
 
440
- const moduleFilenames = modules.map(m =>
433
+ const moduleFilenames = modules.map((m) =>
441
434
  moduleToSourceNameMapping.get(m)
442
435
  );
443
436
  sourceMap.sources = /** @type {string[]} */ (moduleFilenames);
437
+ sourceMap.ignoreList = options.ignoreList
438
+ ? sourceMap.sources.reduce(
439
+ /** @type {(acc: number[], sourceName: string, idx: number) => number[]} */ (
440
+ (acc, sourceName, idx) => {
441
+ const rule = /** @type {Rules} */ (
442
+ options.ignoreList
443
+ );
444
+ if (
445
+ ModuleFilenameHelpers.matchPart(sourceName, rule)
446
+ ) {
447
+ acc.push(idx);
448
+ }
449
+ return acc;
450
+ }
451
+ ),
452
+ []
453
+ )
454
+ : [];
455
+
444
456
  if (options.noSources) {
445
457
  sourceMap.sourcesContent = undefined;
446
458
  }
@@ -460,7 +472,7 @@ class SourceMapDevToolPlugin {
460
472
  : quoteMeta(contenthash);
461
473
  sourceMap.file = sourceMap.file.replace(
462
474
  new RegExp(pattern, "g"),
463
- m => "x".repeat(m.length)
475
+ (m) => "x".repeat(m.length)
464
476
  );
465
477
  }
466
478
 
@@ -484,23 +496,23 @@ class SourceMapDevToolPlugin {
484
496
  if (options.debugIds) {
485
497
  const debugId = generateDebugId(source, sourceMap.file);
486
498
  sourceMap.debugId = debugId;
487
- currentSourceMappingURLComment = `\n//# debugId=${debugId}${currentSourceMappingURLComment}`;
499
+
500
+ const debugIdComment = `\n//# debugId=${debugId}`;
501
+ currentSourceMappingURLComment =
502
+ currentSourceMappingURLComment
503
+ ? `${debugIdComment}${currentSourceMappingURLComment}`
504
+ : debugIdComment;
488
505
  }
489
506
 
490
507
  const sourceMapString = JSON.stringify(sourceMap);
491
508
  if (sourceMapFilename) {
492
509
  const filename = file;
493
- const sourceMapContentHash =
494
- /** @type {string} */
495
- (
496
- usesContentHash &&
497
- createHash(
498
- /** @type {Algorithm} */
499
- (compilation.outputOptions.hashFunction)
500
- )
501
- .update(sourceMapString)
502
- .digest("hex")
503
- );
510
+ const sourceMapContentHash = usesContentHash
511
+ ? createHash(compilation.outputOptions.hashFunction)
512
+ .update(sourceMapString)
513
+ .digest("hex")
514
+ : undefined;
515
+
504
516
  const pathParams = {
505
517
  chunk,
506
518
  filename: options.fileContext
@@ -555,17 +567,18 @@ class SourceMapDevToolPlugin {
555
567
  sourceMapAsset,
556
568
  sourceMapAssetInfo
557
569
  );
558
- if (chunk !== undefined)
570
+ if (chunk !== undefined) {
559
571
  chunk.auxiliaryFiles.add(sourceMapFile);
572
+ }
560
573
  } else {
561
574
  if (currentSourceMappingURLComment === false) {
562
575
  throw new Error(
563
- "SourceMapDevToolPlugin: append can't be false when no filename is provided"
576
+ `${PLUGIN_NAME}: append can't be false when no filename is provided`
564
577
  );
565
578
  }
566
579
  if (typeof currentSourceMappingURLComment === "function") {
567
580
  throw new Error(
568
- "SourceMapDevToolPlugin: append can't be a function when no filename is provided"
581
+ `${PLUGIN_NAME}: append can't be a function when no filename is provided`
569
582
  );
570
583
  }
571
584
  /**
@@ -580,7 +593,7 @@ class SourceMapDevToolPlugin {
580
593
  () =>
581
594
  `data:application/json;charset=utf-8;base64,${Buffer.from(
582
595
  sourceMapString,
583
- "utf-8"
596
+ "utf8"
584
597
  ).toString("base64")}`
585
598
  )
586
599
  );
@@ -589,7 +602,7 @@ class SourceMapDevToolPlugin {
589
602
  compilation.updateAsset(file, asset);
590
603
  }
591
604
 
592
- task.cacheItem.store({ assets, assetsInfo }, err => {
605
+ task.cacheItem.store({ assets, assetsInfo }, (err) => {
593
606
  reportProgress(
594
607
  0.5 + (0.5 * ++taskIndex) / tasks.length,
595
608
  task.file,
@@ -602,7 +615,7 @@ class SourceMapDevToolPlugin {
602
615
  callback();
603
616
  });
604
617
  },
605
- err => {
618
+ (err) => {
606
619
  reportProgress(1);
607
620
  callback(err);
608
621
  }
package/lib/Stats.js CHANGED
@@ -7,7 +7,6 @@
7
7
 
8
8
  /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
9
9
  /** @typedef {import("./Compilation")} Compilation */
10
- /** @typedef {import("./Compilation").NormalizedStatsOptions} NormalizedStatsOptions */
11
10
  /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
12
11
 
13
12
  class Stats {
@@ -36,7 +35,7 @@ class Stats {
36
35
  hasWarnings() {
37
36
  return (
38
37
  this.compilation.getWarnings().length > 0 ||
39
- this.compilation.children.some(child => child.getStats().hasWarnings())
38
+ this.compilation.children.some((child) => child.getStats().hasWarnings())
40
39
  );
41
40
  }
42
41
 
@@ -46,7 +45,7 @@ class Stats {
46
45
  hasErrors() {
47
46
  return (
48
47
  this.compilation.errors.length > 0 ||
49
- this.compilation.children.some(child => child.getStats().hasErrors())
48
+ this.compilation.children.some((child) => child.getStats().hasErrors())
50
49
  );
51
50
  }
52
51
 
package/lib/Template.js CHANGED
@@ -10,7 +10,7 @@ const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
11
 
12
12
  /** @typedef {import("webpack-sources").Source} Source */
13
- /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
13
+ /** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
14
14
  /** @typedef {import("./Chunk")} Chunk */
15
15
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
16
16
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
@@ -49,7 +49,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
49
49
  * @property {string} fullHash
50
50
  * @property {OutputOptions} outputOptions
51
51
  * @property {CodeGenerationResults} codeGenerationResults
52
- * @property {{javascript: ModuleTemplate}} moduleTemplates
52
+ * @property {{ javascript: ModuleTemplate }} moduleTemplates
53
53
  * @property {DependencyTemplates} dependencyTemplates
54
54
  * @property {RuntimeTemplate} runtimeTemplate
55
55
  * @property {ModuleGraph} moduleGraph
@@ -60,7 +60,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
60
60
 
61
61
  /**
62
62
  * @typedef {object} RenderManifestEntryTemplated
63
- * @property {function(): Source} render
63
+ * @property {() => Source} render
64
64
  * @property {TemplatePath} filenameTemplate
65
65
  * @property {PathData=} pathOptions
66
66
  * @property {AssetInfo=} info
@@ -71,7 +71,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
71
71
 
72
72
  /**
73
73
  * @typedef {object} RenderManifestEntryStatic
74
- * @property {function(): Source} render
74
+ * @property {() => Source} render
75
75
  * @property {string} filename
76
76
  * @property {AssetInfo} info
77
77
  * @property {string} identifier
@@ -80,17 +80,13 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
80
80
  */
81
81
 
82
82
  /**
83
- * @typedef {object} HasId
84
- * @property {number | string} id
85
- */
86
-
87
- /**
88
- * @typedef {function(Module, number): boolean} ModuleFilterPredicate
83
+ * @typedef {(module: Module) => boolean} ModuleFilterPredicate
89
84
  */
90
85
 
91
86
  class Template {
92
87
  /**
93
- * @param {Function} fn a runtime function (.runtime.js) "template"
88
+ * @template {EXPECTED_FUNCTION} T
89
+ * @param {T} fn a runtime function (.runtime.js) "template"
94
90
  * @returns {string} the updated and normalized function string
95
91
  */
96
92
  static getFunctionContent(fn) {
@@ -225,7 +221,7 @@ class Template {
225
221
  }
226
222
 
227
223
  /**
228
- * @param {string|string[]} s string to create prefix for
224
+ * @param {string | string[]} s string to create prefix for
229
225
  * @param {string} prefix prefix to compose
230
226
  * @returns {string} returns new prefix string
231
227
  */
@@ -237,7 +233,7 @@ class Template {
237
233
  }
238
234
 
239
235
  /**
240
- * @param {string|string[]} str string or string collection
236
+ * @param {string | string[]} str string or string collection
241
237
  * @returns {string} returns a single string from array
242
238
  */
243
239
  static asString(str) {
@@ -249,7 +245,7 @@ class Template {
249
245
 
250
246
  /**
251
247
  * @typedef {object} WithId
252
- * @property {string|number} id
248
+ * @property {string | number} id
253
249
  */
254
250
 
255
251
  /**
@@ -284,7 +280,7 @@ class Template {
284
280
  /**
285
281
  * @param {ChunkRenderContext} renderContext render context
286
282
  * @param {Module[]} modules modules to render (should be ordered by identifier)
287
- * @param {function(Module): Source | null} renderModule function to render a module
283
+ * @param {(module: Module, renderInArray?: boolean) => Source | null} renderModule function to render a module
288
284
  * @param {string=} prefix applying prefix strings
289
285
  * @returns {Source | null} rendered chunk modules in a Source object or null if no modules
290
286
  */
@@ -294,12 +290,20 @@ class Template {
294
290
  if (modules.length === 0) {
295
291
  return null;
296
292
  }
297
- /** @type {{id: string|number, source: Source|string}[]} */
298
- const allModules = modules.map(module => ({
299
- id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
300
- source: renderModule(module) || "false"
293
+ /** @type {{ id: ModuleId, module: Module }[]} */
294
+ const modulesWithId = modules.map((m) => ({
295
+ id: /** @type {ModuleId} */ (chunkGraph.getModuleId(m)),
296
+ module: m
301
297
  }));
302
- const bounds = Template.getModulesArrayBounds(allModules);
298
+ const bounds = Template.getModulesArrayBounds(modulesWithId);
299
+ const renderInObject = bounds === false;
300
+
301
+ /** @type {{ id: ModuleId, source: Source | "false" }[]} */
302
+ const allModules = modulesWithId.map(({ id, module }) => ({
303
+ id,
304
+ source: renderModule(module, renderInObject) || "false"
305
+ }));
306
+
303
307
  if (bounds) {
304
308
  // Render a spare array
305
309
  const minId = bounds[0];
@@ -308,7 +312,7 @@ class Template {
308
312
  source.add(`Array(${minId}).concat(`);
309
313
  }
310
314
  source.add("[\n");
311
- /** @type {Map<string|number, {id: string|number, source: Source|string}>} */
315
+ /** @type {Map<ModuleId, { id: ModuleId, source: Source | "false" }>} */
312
316
  const modules = new Map();
313
317
  for (const module of allModules) {
314
318
  modules.set(module.id, module);
@@ -336,7 +340,9 @@ class Template {
336
340
  if (i !== 0) {
337
341
  source.add(",\n");
338
342
  }
339
- source.add(`\n/***/ ${JSON.stringify(module.id)}:\n`);
343
+ source.add(
344
+ `\n/***/ ${JSON.stringify(module.id)}${renderContext.runtimeTemplate.supportsMethodShorthand() && module.source !== "false" ? "" : ":"}\n`
345
+ );
340
346
  source.add(module.source);
341
347
  }
342
348
  source.add(`\n\n${prefix}}`);
@@ -367,6 +373,7 @@ class Template {
367
373
  moduleGraph: renderContext.moduleGraph,
368
374
  runtimeTemplate: renderContext.runtimeTemplate,
369
375
  runtime: renderContext.chunk.runtime,
376
+ runtimes: [renderContext.chunk.runtime],
370
377
  codeGenerationResults
371
378
  });
372
379
  if (!codeGenResult) continue;
@@ -409,7 +416,7 @@ class Template {
409
416
  }
410
417
 
411
418
  module.exports = Template;
412
- module.exports.NUMBER_OF_IDENTIFIER_START_CHARS =
413
- NUMBER_OF_IDENTIFIER_START_CHARS;
414
419
  module.exports.NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS =
415
420
  NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS;
421
+ module.exports.NUMBER_OF_IDENTIFIER_START_CHARS =
422
+ NUMBER_OF_IDENTIFIER_START_CHARS;