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
@@ -6,12 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  const { SyncBailHook } = require("tapable");
9
- const { RawSource, CachedSource, CompatSource } = require("webpack-sources");
9
+ const { CachedSource, CompatSource, RawSource } = require("webpack-sources");
10
10
  const Compilation = require("../Compilation");
11
11
  const WebpackError = require("../WebpackError");
12
12
  const { compareSelect, compareStrings } = require("../util/comparators");
13
13
  const createHash = require("../util/createHash");
14
14
 
15
+ /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
16
+ /** @typedef {import("../../declarations/WebpackOptions").HashDigest} HashDigest */
15
17
  /** @typedef {import("webpack-sources").Source} Source */
16
18
  /** @typedef {import("../Cache").Etag} Etag */
17
19
  /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
@@ -38,7 +40,7 @@ const addToList = (itemOrItems, list) => {
38
40
  /**
39
41
  * @template T
40
42
  * @param {T[]} input list
41
- * @param {function(T): Buffer} fn map function
43
+ * @param {(item: T) => Buffer} fn map function
42
44
  * @returns {Buffer[]} buffers without duplicates
43
45
  */
44
46
  const mapAndDeduplicateBuffers = (input, fn) => {
@@ -61,7 +63,7 @@ const mapAndDeduplicateBuffers = (input, fn) => {
61
63
  * @param {string} str String to quote
62
64
  * @returns {string} Escaped string
63
65
  */
64
- const quoteMeta = str => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
66
+ const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
65
67
 
66
68
  const cachedSourceMap = new WeakMap();
67
69
 
@@ -69,7 +71,7 @@ const cachedSourceMap = new WeakMap();
69
71
  * @param {Source} source source
70
72
  * @returns {CachedSource} cached source
71
73
  */
72
- const toCachedSource = source => {
74
+ const toCachedSource = (source) => {
73
75
  if (source instanceof CachedSource) {
74
76
  return source;
75
77
  }
@@ -107,6 +109,14 @@ const toCachedSource = source => {
107
109
  /** @type {WeakMap<Compilation, CompilationHooks>} */
108
110
  const compilationHooksMap = new WeakMap();
109
111
 
112
+ /**
113
+ * @typedef {object} RealContentHashPluginOptions
114
+ * @property {HashFunction} hashFunction the hash function to use
115
+ * @property {HashDigest} hashDigest the hash digest to use
116
+ */
117
+
118
+ const PLUGIN_NAME = "RealContentHashPlugin";
119
+
110
120
  class RealContentHashPlugin {
111
121
  /**
112
122
  * @param {Compilation} compilation the compilation
@@ -129,9 +139,7 @@ class RealContentHashPlugin {
129
139
  }
130
140
 
131
141
  /**
132
- * @param {object} options options object
133
- * @param {string | Hash} options.hashFunction the hash function to use
134
- * @param {string} options.hashDigest the hash digest to use
142
+ * @param {RealContentHashPluginOptions} options options
135
143
  */
136
144
  constructor({ hashFunction, hashDigest }) {
137
145
  this._hashFunction = hashFunction;
@@ -144,7 +152,7 @@ class RealContentHashPlugin {
144
152
  * @returns {void}
145
153
  */
146
154
  apply(compiler) {
147
- compiler.hooks.compilation.tap("RealContentHashPlugin", compilation => {
155
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
148
156
  const cacheAnalyse = compilation.getCache(
149
157
  "RealContentHashPlugin|analyse"
150
158
  );
@@ -154,7 +162,7 @@ class RealContentHashPlugin {
154
162
  const hooks = RealContentHashPlugin.getCompilationHooks(compilation);
155
163
  compilation.hooks.processAssets.tapPromise(
156
164
  {
157
- name: "RealContentHashPlugin",
165
+ name: PLUGIN_NAME,
158
166
  stage: Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_HASH
159
167
  },
160
168
  async () => {
@@ -199,7 +207,7 @@ class RealContentHashPlugin {
199
207
  "g"
200
208
  );
201
209
  await Promise.all(
202
- assetsWithInfo.map(async asset => {
210
+ assetsWithInfo.map(async (asset) => {
203
211
  const { name, source, content, hashes } = asset;
204
212
  if (Buffer.isBuffer(content)) {
205
213
  asset.referencedHashes = EMPTY_SET;
@@ -208,7 +216,7 @@ class RealContentHashPlugin {
208
216
  }
209
217
  const etag = cacheAnalyse.mergeEtags(
210
218
  cacheAnalyse.getLazyHashedEtag(source),
211
- Array.from(hashes).join("|")
219
+ [...hashes].join("|")
212
220
  );
213
221
  [asset.referencedHashes, asset.ownHashes] =
214
222
  await cacheAnalyse.providePromise(name, etag, () => {
@@ -232,10 +240,10 @@ class RealContentHashPlugin {
232
240
  * @param {string} hash the hash
233
241
  * @returns {undefined | ReferencedHashes} the referenced hashes
234
242
  */
235
- const getDependencies = hash => {
243
+ const getDependencies = (hash) => {
236
244
  const assets = hashToAssets.get(hash);
237
245
  if (!assets) {
238
- const referencingAssets = assetsWithInfo.filter(asset =>
246
+ const referencingAssets = assetsWithInfo.filter((asset) =>
239
247
  /** @type {ReferencedHashes} */ (asset.referencedHashes).has(
240
248
  hash
241
249
  )
@@ -246,7 +254,7 @@ An asset was cached with a reference to another asset (${hash}) that's not in th
246
254
  Either the asset was incorrectly cached, or the referenced asset should also be restored from cache.
247
255
  Referenced by:
248
256
  ${referencingAssets
249
- .map(a => {
257
+ .map((a) => {
250
258
  const match = new RegExp(`.{0,20}${quoteMeta(hash)}.{0,20}`).exec(
251
259
  a.content
252
260
  );
@@ -275,13 +283,14 @@ ${referencingAssets
275
283
  * @param {string} hash the hash
276
284
  * @returns {string} the hash info
277
285
  */
278
- const hashInfo = hash => {
286
+ const hashInfo = (hash) => {
279
287
  const assets = hashToAssets.get(hash);
280
288
  return `${hash} (${Array.from(
281
289
  /** @type {AssetInfoForRealContentHash[]} */ (assets),
282
- a => a.name
290
+ (a) => a.name
283
291
  )})`;
284
292
  };
293
+ /** @type {Set<string>} */
285
294
  const hashesInOrder = new Set();
286
295
  for (const hash of hashToAssets.keys()) {
287
296
  /**
@@ -310,32 +319,32 @@ ${referencingAssets
310
319
  if (hashesInOrder.has(hash)) continue;
311
320
  add(hash, new Set());
312
321
  }
322
+ /** @type {Map<string, string>} */
313
323
  const hashToNewHash = new Map();
314
324
  /**
315
325
  * @param {AssetInfoForRealContentHash} asset asset info
316
326
  * @returns {Etag} etag
317
327
  */
318
- const getEtag = asset =>
328
+ const getEtag = (asset) =>
319
329
  cacheGenerate.mergeEtags(
320
330
  cacheGenerate.getLazyHashedEtag(asset.source),
321
331
  Array.from(
322
332
  /** @type {ReferencedHashes} */ (asset.referencedHashes),
323
- hash => hashToNewHash.get(hash)
333
+ (hash) => hashToNewHash.get(hash)
324
334
  ).join("|")
325
335
  );
326
336
  /**
327
337
  * @param {AssetInfoForRealContentHash} asset asset info
328
338
  * @returns {Promise<void>}
329
339
  */
330
- const computeNewContent = asset => {
340
+ const computeNewContent = (asset) => {
331
341
  if (asset.contentComputePromise) return asset.contentComputePromise;
332
342
  return (asset.contentComputePromise = (async () => {
333
343
  if (
334
344
  /** @type {OwnHashes} */ (asset.ownHashes).size > 0 ||
335
- Array.from(
336
- /** @type {ReferencedHashes} */
337
- (asset.referencedHashes)
338
- ).some(hash => hashToNewHash.get(hash) !== hash)
345
+ [
346
+ .../** @type {ReferencedHashes} */ (asset.referencedHashes)
347
+ ].some((hash) => hashToNewHash.get(hash) !== hash)
339
348
  ) {
340
349
  const identifier = asset.name;
341
350
  const etag = getEtag(asset);
@@ -343,8 +352,9 @@ ${referencingAssets
343
352
  identifier,
344
353
  etag,
345
354
  () => {
346
- const newContent = asset.content.replace(hashRegExp, hash =>
347
- hashToNewHash.get(hash)
355
+ const newContent = asset.content.replace(
356
+ hashRegExp,
357
+ (hash) => /** @type {string} */ (hashToNewHash.get(hash))
348
358
  );
349
359
  return new RawSource(newContent);
350
360
  }
@@ -356,16 +366,16 @@ ${referencingAssets
356
366
  * @param {AssetInfoForRealContentHash} asset asset info
357
367
  * @returns {Promise<void>}
358
368
  */
359
- const computeNewContentWithoutOwn = asset => {
360
- if (asset.contentComputeWithoutOwnPromise)
369
+ const computeNewContentWithoutOwn = (asset) => {
370
+ if (asset.contentComputeWithoutOwnPromise) {
361
371
  return asset.contentComputeWithoutOwnPromise;
372
+ }
362
373
  return (asset.contentComputeWithoutOwnPromise = (async () => {
363
374
  if (
364
375
  /** @type {OwnHashes} */ (asset.ownHashes).size > 0 ||
365
- Array.from(
366
- /** @type {ReferencedHashes} */
367
- (asset.referencedHashes)
368
- ).some(hash => hashToNewHash.get(hash) !== hash)
376
+ [
377
+ .../** @type {ReferencedHashes} */ (asset.referencedHashes)
378
+ ].some((hash) => hashToNewHash.get(hash) !== hash)
369
379
  ) {
370
380
  const identifier = `${asset.name}|without-own`;
371
381
  const etag = getEtag(asset);
@@ -375,13 +385,14 @@ ${referencingAssets
375
385
  () => {
376
386
  const newContent = asset.content.replace(
377
387
  hashRegExp,
378
- hash => {
388
+ (hash) => {
379
389
  if (
380
- /** @type {OwnHashes} */ (asset.ownHashes).has(hash)
390
+ /** @type {OwnHashes} */
391
+ (asset.ownHashes).has(hash)
381
392
  ) {
382
393
  return "";
383
394
  }
384
- return hashToNewHash.get(hash);
395
+ return /** @type {string} */ (hashToNewHash.get(hash));
385
396
  }
386
397
  );
387
398
  return new RawSource(newContent);
@@ -390,20 +401,20 @@ ${referencingAssets
390
401
  }
391
402
  })());
392
403
  };
393
- const comparator = compareSelect(a => a.name, compareStrings);
404
+ const comparator = compareSelect((a) => a.name, compareStrings);
394
405
  for (const oldHash of hashesInOrder) {
395
406
  const assets =
396
407
  /** @type {AssetInfoForRealContentHash[]} */
397
408
  (hashToAssets.get(oldHash));
398
409
  assets.sort(comparator);
399
410
  await Promise.all(
400
- assets.map(asset =>
411
+ assets.map((asset) =>
401
412
  /** @type {OwnHashes} */ (asset.ownHashes).has(oldHash)
402
413
  ? computeNewContentWithoutOwn(asset)
403
414
  : computeNewContent(asset)
404
415
  )
405
416
  );
406
- const assetsContent = mapAndDeduplicateBuffers(assets, asset => {
417
+ const assetsContent = mapAndDeduplicateBuffers(assets, (asset) => {
407
418
  if (/** @type {OwnHashes} */ (asset.ownHashes).has(oldHash)) {
408
419
  return asset.newSourceWithoutOwn
409
420
  ? asset.newSourceWithoutOwn.buffer()
@@ -423,22 +434,25 @@ ${referencingAssets
423
434
  hash.update(content);
424
435
  }
425
436
  const digest = hash.digest(this._hashDigest);
426
- newHash = /** @type {string} */ (digest.slice(0, oldHash.length));
437
+ newHash = digest.slice(0, oldHash.length);
427
438
  }
428
439
  hashToNewHash.set(oldHash, newHash);
429
440
  }
430
441
  await Promise.all(
431
- assetsWithInfo.map(async asset => {
442
+ assetsWithInfo.map(async (asset) => {
432
443
  await computeNewContent(asset);
433
- const newName = asset.name.replace(hashRegExp, hash =>
434
- hashToNewHash.get(hash)
444
+ const newName = asset.name.replace(
445
+ hashRegExp,
446
+ (hash) => /** @type {string} */ (hashToNewHash.get(hash))
435
447
  );
436
448
 
437
449
  const infoUpdate = {};
438
- const hash = asset.info.contenthash;
450
+ const hash = /** @type {string} */ (asset.info.contenthash);
439
451
  infoUpdate.contenthash = Array.isArray(hash)
440
- ? hash.map(hash => hashToNewHash.get(hash))
441
- : hashToNewHash.get(hash);
452
+ ? hash.map(
453
+ (hash) => /** @type {string} */ (hashToNewHash.get(hash))
454
+ )
455
+ : /** @type {string} */ (hashToNewHash.get(hash));
442
456
 
443
457
  if (asset.newSource !== undefined) {
444
458
  compilation.updateAsset(
@@ -5,11 +5,13 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { STAGE_BASIC, STAGE_ADVANCED } = require("../OptimizationStages");
8
+ const { STAGE_ADVANCED, STAGE_BASIC } = require("../OptimizationStages");
9
9
 
10
10
  /** @typedef {import("../Chunk")} Chunk */
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
+ const PLUGIN_NAME = "RemoveEmptyChunksPlugin";
14
+
13
15
  class RemoveEmptyChunksPlugin {
14
16
  /**
15
17
  * Apply the plugin
@@ -17,12 +19,12 @@ class RemoveEmptyChunksPlugin {
17
19
  * @returns {void}
18
20
  */
19
21
  apply(compiler) {
20
- compiler.hooks.compilation.tap("RemoveEmptyChunksPlugin", compilation => {
22
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
21
23
  /**
22
24
  * @param {Iterable<Chunk>} chunks the chunks array
23
25
  * @returns {void}
24
26
  */
25
- const handler = chunks => {
27
+ const handler = (chunks) => {
26
28
  const chunkGraph = compilation.chunkGraph;
27
29
  for (const chunk of chunks) {
28
30
  if (
@@ -39,14 +41,14 @@ class RemoveEmptyChunksPlugin {
39
41
  // TODO do it once
40
42
  compilation.hooks.optimizeChunks.tap(
41
43
  {
42
- name: "RemoveEmptyChunksPlugin",
44
+ name: PLUGIN_NAME,
43
45
  stage: STAGE_BASIC
44
46
  },
45
47
  handler
46
48
  );
47
49
  compilation.hooks.optimizeChunks.tap(
48
50
  {
49
- name: "RemoveEmptyChunksPlugin",
51
+ name: PLUGIN_NAME,
50
52
  stage: STAGE_ADVANCED
51
53
  },
52
54
  handler
@@ -54,4 +56,5 @@ class RemoveEmptyChunksPlugin {
54
56
  });
55
57
  }
56
58
  }
59
+
57
60
  module.exports = RemoveEmptyChunksPlugin;
@@ -59,13 +59,15 @@ function* getModulesFromMask(mask, ordinalModules) {
59
59
  }
60
60
  }
61
61
 
62
+ const PLUGIN_NAME = "RemoveParentModulesPlugin";
63
+
62
64
  class RemoveParentModulesPlugin {
63
65
  /**
64
66
  * @param {Compiler} compiler the compiler
65
67
  * @returns {void}
66
68
  */
67
69
  apply(compiler) {
68
- compiler.hooks.compilation.tap("RemoveParentModulesPlugin", compilation => {
70
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
69
71
  /**
70
72
  * @param {Iterable<Chunk>} chunks the chunks
71
73
  * @param {ChunkGroup[]} chunkGroups the chunk groups
@@ -85,7 +87,7 @@ class RemoveParentModulesPlugin {
85
87
  * @param {Module} mod the module to get the mask for
86
88
  * @returns {bigint} the module mask to uniquely identify the module
87
89
  */
88
- const getOrCreateModuleMask = mod => {
90
+ const getOrCreateModuleMask = (mod) => {
89
91
  let id = maskByModule.get(mod);
90
92
  if (id === undefined) {
91
93
  id = nextModuleMask;
@@ -175,7 +177,7 @@ class RemoveParentModulesPlugin {
175
177
 
176
178
  const availableModulesSets = Array.from(
177
179
  chunk.groupsIterable,
178
- chunkGroup => availableModulesMap.get(chunkGroup)
180
+ (chunkGroup) => availableModulesMap.get(chunkGroup)
179
181
  );
180
182
  if (availableModulesSets.includes(undefined)) continue; // No info about this chunk group
181
183
 
@@ -193,7 +195,7 @@ class RemoveParentModulesPlugin {
193
195
  };
194
196
  compilation.hooks.optimizeChunks.tap(
195
197
  {
196
- name: "RemoveParentModulesPlugin",
198
+ name: PLUGIN_NAME,
197
199
  stage: STAGE_BASIC
198
200
  },
199
201
  handler
@@ -201,4 +203,5 @@ class RemoveParentModulesPlugin {
201
203
  });
202
204
  }
203
205
  }
206
+
204
207
  module.exports = RemoveParentModulesPlugin;
@@ -7,19 +7,19 @@
7
7
 
8
8
  /** @typedef {import("../Compilation").EntryData} EntryData */
9
9
  /** @typedef {import("../Compiler")} Compiler */
10
- /** @typedef {import("../Entrypoint")} Entrypoint */
10
+
11
+ const PLUGIN_NAME = "RuntimeChunkPlugin";
12
+
13
+ /** @typedef {(entrypoint: { name: string }) => string} RuntimeChunkFunction */
11
14
 
12
15
  class RuntimeChunkPlugin {
13
16
  /**
14
- * @param {{ name?: (entrypoint: { name: string }) => string }} options options
17
+ * @param {{ name?: RuntimeChunkFunction }=} options options
15
18
  */
16
19
  constructor(options) {
17
20
  this.options = {
18
- /**
19
- * @param {Entrypoint} entrypoint entrypoint name
20
- * @returns {string} runtime chunk name
21
- */
22
- name: entrypoint => `runtime~${entrypoint.name}`,
21
+ /** @type {RuntimeChunkFunction} */
22
+ name: (entrypoint) => `runtime~${entrypoint.name}`,
23
23
  ...options
24
24
  };
25
25
  }
@@ -30,26 +30,23 @@ class RuntimeChunkPlugin {
30
30
  * @returns {void}
31
31
  */
32
32
  apply(compiler) {
33
- compiler.hooks.thisCompilation.tap("RuntimeChunkPlugin", compilation => {
34
- compilation.hooks.addEntry.tap(
35
- "RuntimeChunkPlugin",
36
- (_, { name: entryName }) => {
37
- if (entryName === undefined) return;
38
- const data =
39
- /** @type {EntryData} */
40
- (compilation.entries.get(entryName));
41
- if (data.options.runtime === undefined && !data.options.dependOn) {
42
- // Determine runtime chunk name
43
- let name =
44
- /** @type {string | ((entrypoint: { name: string }) => string)} */
45
- (this.options.name);
46
- if (typeof name === "function") {
47
- name = name({ name: entryName });
48
- }
49
- data.options.runtime = name;
33
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
34
+ compilation.hooks.addEntry.tap(PLUGIN_NAME, (_, { name: entryName }) => {
35
+ if (entryName === undefined) return;
36
+ const data =
37
+ /** @type {EntryData} */
38
+ (compilation.entries.get(entryName));
39
+ if (data.options.runtime === undefined && !data.options.dependOn) {
40
+ // Determine runtime chunk name
41
+ let name =
42
+ /** @type {string | RuntimeChunkFunction} */
43
+ (this.options.name);
44
+ if (typeof name === "function") {
45
+ name = name({ name: entryName });
50
46
  }
47
+ data.options.runtime = name;
51
48
  }
52
- );
49
+ });
53
50
  });
54
51
  }
55
52
  }
@@ -8,18 +8,19 @@
8
8
  const glob2regexp = require("glob-to-regexp");
9
9
  const {
10
10
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
- JAVASCRIPT_MODULE_TYPE_ESM,
12
- JAVASCRIPT_MODULE_TYPE_DYNAMIC
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
+ JAVASCRIPT_MODULE_TYPE_ESM
13
13
  } = require("../ModuleTypeConstants");
14
14
  const { STAGE_DEFAULT } = require("../OptimizationStages");
15
15
  const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
16
16
  const HarmonyImportSpecifierDependency = require("../dependencies/HarmonyImportSpecifierDependency");
17
17
  const formatLocation = require("../formatLocation");
18
18
 
19
+ /** @typedef {import("estree").MaybeNamedClassDeclaration} MaybeNamedClassDeclaration */
20
+ /** @typedef {import("estree").MaybeNamedFunctionDeclaration} MaybeNamedFunctionDeclaration */
19
21
  /** @typedef {import("estree").ModuleDeclaration} ModuleDeclaration */
20
22
  /** @typedef {import("estree").Statement} Statement */
21
23
  /** @typedef {import("../Compiler")} Compiler */
22
- /** @typedef {import("../Dependency")} Dependency */
23
24
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
24
25
  /** @typedef {import("../Module")} Module */
25
26
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
@@ -35,20 +36,16 @@ const formatLocation = require("../formatLocation");
35
36
  * @property {boolean} checked if the export is conditional
36
37
  */
37
38
 
38
- /**
39
- * @typedef {object} ReexportInfo
40
- * @property {Map<string, ExportInModule[]>} static
41
- * @property {Map<Module, Set<string>>} dynamic
42
- */
39
+ /** @typedef {string | boolean | string[] | undefined} SideEffectsFlagValue */
43
40
 
44
41
  /** @typedef {Map<string, RegExp>} CacheItem */
45
42
 
46
- /** @type {WeakMap<any, CacheItem>} */
43
+ /** @type {WeakMap<Compiler, CacheItem>} */
47
44
  const globToRegexpCache = new WeakMap();
48
45
 
49
46
  /**
50
47
  * @param {string} glob the pattern
51
- * @param {Map<string, RegExp>} cache the glob to RegExp cache
48
+ * @param {CacheItem} cache the glob to RegExp cache
52
49
  * @returns {RegExp} a regular expression
53
50
  */
54
51
  const globToRegexp = (glob, cache) => {
@@ -103,7 +100,7 @@ class SideEffectsFlagPlugin {
103
100
  }
104
101
  const hasSideEffects = SideEffectsFlagPlugin.moduleHasSideEffects(
105
102
  resolveData.relativePath,
106
- sideEffects,
103
+ /** @type {SideEffectsFlagValue} */ (sideEffects),
107
104
  /** @type {CacheItem} */ (cache)
108
105
  );
109
106
  module.factoryMeta.sideEffectFree = !hasSideEffects;
@@ -127,15 +124,15 @@ class SideEffectsFlagPlugin {
127
124
  * @param {JavascriptParser} parser the parser
128
125
  * @returns {void}
129
126
  */
130
- const parserHandler = parser => {
131
- /** @type {undefined | Statement | ModuleDeclaration} */
127
+ const parserHandler = (parser) => {
128
+ /** @type {undefined | Statement | ModuleDeclaration | MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration} */
132
129
  let sideEffectsStatement;
133
130
  parser.hooks.program.tap(PLUGIN_NAME, () => {
134
131
  sideEffectsStatement = undefined;
135
132
  });
136
133
  parser.hooks.statement.tap(
137
134
  { name: PLUGIN_NAME, stage: -100 },
138
- statement => {
135
+ (statement) => {
139
136
  if (sideEffectsStatement) return;
140
137
  if (parser.scope.topLevelScope !== true) return;
141
138
  switch (statement.type) {
@@ -143,7 +140,8 @@ class SideEffectsFlagPlugin {
143
140
  if (
144
141
  !parser.isPure(
145
142
  statement.expression,
146
- /** @type {Range} */ (statement.range)[0]
143
+ /** @type {Range} */
144
+ (statement.range)[0]
147
145
  )
148
146
  ) {
149
147
  sideEffectsStatement = statement;
@@ -155,7 +153,8 @@ class SideEffectsFlagPlugin {
155
153
  if (
156
154
  !parser.isPure(
157
155
  statement.test,
158
- /** @type {Range} */ (statement.range)[0]
156
+ /** @type {Range} */
157
+ (statement.range)[0]
159
158
  )
160
159
  ) {
161
160
  sideEffectsStatement = statement;
@@ -191,7 +190,8 @@ class SideEffectsFlagPlugin {
191
190
  if (
192
191
  !parser.isPure(
193
192
  statement.discriminant,
194
- /** @type {Range} */ (statement.range)[0]
193
+ /** @type {Range} */
194
+ (statement.range)[0]
195
195
  )
196
196
  ) {
197
197
  sideEffectsStatement = statement;
@@ -214,9 +214,9 @@ class SideEffectsFlagPlugin {
214
214
  case "ExportDefaultDeclaration":
215
215
  if (
216
216
  !parser.isPure(
217
- /** @type {TODO} */
218
- (statement.declaration),
219
- /** @type {Range} */ (statement.range)[0]
217
+ statement.declaration,
218
+ /** @type {Range} */
219
+ (statement.range)[0]
220
220
  )
221
221
  ) {
222
222
  sideEffectsStatement = statement;
@@ -270,7 +270,7 @@ class SideEffectsFlagPlugin {
270
270
  name: PLUGIN_NAME,
271
271
  stage: STAGE_DEFAULT
272
272
  },
273
- modules => {
273
+ (modules) => {
274
274
  const logger = compilation.getLogger(
275
275
  "webpack.SideEffectsFlagPlugin"
276
276
  );
@@ -282,7 +282,7 @@ class SideEffectsFlagPlugin {
282
282
  /**
283
283
  * @param {Module} module module
284
284
  */
285
- const optimizeIncomingConnections = module => {
285
+ const optimizeIncomingConnections = (module) => {
286
286
  if (optimizedModules.has(module)) return;
287
287
  optimizedModules.add(module);
288
288
  if (module.getSideEffectsConnectionState(moduleGraph) === false) {
@@ -313,8 +313,17 @@ class SideEffectsFlagPlugin {
313
313
  ({ module }) =>
314
314
  module.getSideEffectsConnectionState(moduleGraph) ===
315
315
  false,
316
- ({ module: newModule, export: exportName }) => {
316
+ ({
317
+ module: newModule,
318
+ export: exportName,
319
+ connection: targetConnection
320
+ }) => {
317
321
  moduleGraph.updateModule(dep, newModule);
322
+ moduleGraph.updateParent(
323
+ dep,
324
+ targetConnection,
325
+ /** @type {Module} */ (connection.originModule)
326
+ );
318
327
  moduleGraph.addExplanation(
319
328
  dep,
320
329
  "(skipped side-effect-free modules)"
@@ -346,6 +355,13 @@ class SideEffectsFlagPlugin {
346
355
  if (!target) continue;
347
356
 
348
357
  moduleGraph.updateModule(dep, target.module);
358
+ moduleGraph.updateParent(
359
+ dep,
360
+ /** @type {ModuleGraphConnection} */ (
361
+ target.connection
362
+ ),
363
+ /** @type {Module} */ (connection.originModule)
364
+ );
349
365
  moduleGraph.addExplanation(
350
366
  dep,
351
367
  "(skipped side-effect-free modules)"
@@ -365,6 +381,7 @@ class SideEffectsFlagPlugin {
365
381
  for (const module of modules) {
366
382
  optimizeIncomingConnections(module);
367
383
  }
384
+ moduleGraph.finishUpdateParent();
368
385
  logger.timeEnd("update dependencies");
369
386
  }
370
387
  );
@@ -374,8 +391,8 @@ class SideEffectsFlagPlugin {
374
391
 
375
392
  /**
376
393
  * @param {string} moduleName the module name
377
- * @param {undefined | boolean | string | string[]} flagValue the flag value
378
- * @param {Map<string, RegExp>} cache cache for glob to regexp
394
+ * @param {SideEffectsFlagValue} flagValue the flag value
395
+ * @param {CacheItem} cache cache for glob to regexp
379
396
  * @returns {boolean | undefined} true, when the module has side effects, undefined or false when not
380
397
  */
381
398
  static moduleHasSideEffects(moduleName, flagValue, cache) {
@@ -387,10 +404,11 @@ class SideEffectsFlagPlugin {
387
404
  case "string":
388
405
  return globToRegexp(flagValue, cache).test(moduleName);
389
406
  case "object":
390
- return flagValue.some(glob =>
407
+ return flagValue.some((glob) =>
391
408
  SideEffectsFlagPlugin.moduleHasSideEffects(moduleName, glob, cache)
392
409
  );
393
410
  }
394
411
  }
395
412
  }
413
+
396
414
  module.exports = SideEffectsFlagPlugin;