webpack 5.93.0 → 5.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +33 -20
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +75 -68
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +6 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +41 -15
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +130 -69
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +21 -13
  94. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  95. package/lib/WatchIgnorePlugin.js +26 -9
  96. package/lib/Watching.js +10 -5
  97. package/lib/WebpackOptionsApply.js +84 -62
  98. package/lib/asset/AssetGenerator.js +107 -42
  99. package/lib/asset/AssetModulesPlugin.js +29 -23
  100. package/lib/asset/AssetSourceGenerator.js +2 -7
  101. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  102. package/lib/buildChunkGraph.js +93 -81
  103. package/lib/cache/IdleFileCachePlugin.js +4 -4
  104. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  105. package/lib/cache/PackFileCacheStrategy.js +51 -50
  106. package/lib/cache/ResolverCachePlugin.js +6 -6
  107. package/lib/cache/mergeEtags.js +16 -21
  108. package/lib/cli.js +148 -104
  109. package/lib/config/browserslistTargetHandler.js +16 -13
  110. package/lib/config/defaults.js +32 -28
  111. package/lib/config/normalization.js +335 -344
  112. package/lib/config/target.js +42 -52
  113. package/lib/container/ContainerEntryModule.js +2 -2
  114. package/lib/container/ContainerPlugin.js +1 -1
  115. package/lib/container/RemoteRuntimeModule.js +11 -8
  116. package/lib/container/options.js +18 -4
  117. package/lib/css/CssExportsGenerator.js +26 -24
  118. package/lib/css/CssGenerator.js +9 -4
  119. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  120. package/lib/css/CssModulesPlugin.js +127 -47
  121. package/lib/css/CssParser.js +20 -18
  122. package/lib/css/walkCssTokens.js +80 -95
  123. package/lib/debug/ProfilingPlugin.js +19 -20
  124. package/lib/dependencies/AMDDefineDependency.js +1 -1
  125. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  126. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  128. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  129. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  130. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  131. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  132. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  133. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  134. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  135. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  136. package/lib/dependencies/ConstDependency.js +1 -1
  137. package/lib/dependencies/ContextDependency.js +7 -2
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +35 -8
  140. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  141. package/lib/dependencies/CssExportDependency.js +7 -7
  142. package/lib/dependencies/CssImportDependency.js +0 -2
  143. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
  144. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  145. package/lib/dependencies/CssUrlDependency.js +4 -5
  146. package/lib/dependencies/DynamicExports.js +5 -5
  147. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  148. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  149. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  150. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  151. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  152. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  153. package/lib/dependencies/HarmonyExports.js +2 -2
  154. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  155. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  156. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
  157. package/lib/dependencies/ImportDependency.js +1 -1
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  159. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  160. package/lib/dependencies/ImportParserPlugin.js +39 -44
  161. package/lib/dependencies/JsonExportsDependency.js +22 -18
  162. package/lib/dependencies/LoaderPlugin.js +47 -36
  163. package/lib/dependencies/LocalModule.js +1 -1
  164. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  165. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  166. package/lib/dependencies/ProvidedDependency.js +1 -1
  167. package/lib/dependencies/PureExpressionDependency.js +6 -6
  168. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  169. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  170. package/lib/dependencies/SystemPlugin.js +1 -1
  171. package/lib/dependencies/URLDependency.js +3 -3
  172. package/lib/dependencies/URLPlugin.js +66 -12
  173. package/lib/dependencies/WorkerPlugin.js +25 -24
  174. package/lib/dependencies/processExportInfo.js +3 -1
  175. package/lib/electron/ElectronTargetPlugin.js +1 -0
  176. package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
  177. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  178. package/lib/formatLocation.js +1 -2
  179. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  180. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  181. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  182. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  183. package/lib/hmr/lazyCompilationBackend.js +64 -40
  184. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  185. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  186. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  187. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  188. package/lib/ids/IdHelpers.js +29 -39
  189. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  190. package/lib/index.js +1 -5
  191. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
  192. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  193. package/lib/javascript/ChunkHelpers.js +1 -1
  194. package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
  195. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  196. package/lib/javascript/JavascriptGenerator.js +23 -7
  197. package/lib/javascript/JavascriptModulesPlugin.js +133 -86
  198. package/lib/javascript/JavascriptParser.js +179 -200
  199. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  200. package/lib/javascript/StartupHelpers.js +41 -13
  201. package/lib/json/JsonGenerator.js +7 -13
  202. package/lib/json/JsonModulesPlugin.js +1 -4
  203. package/lib/json/JsonParser.js +5 -3
  204. package/lib/library/AmdLibraryPlugin.js +12 -16
  205. package/lib/library/AssignLibraryPlugin.js +8 -10
  206. package/lib/library/EnableLibraryPlugin.js +15 -14
  207. package/lib/library/JsonpLibraryPlugin.js +2 -1
  208. package/lib/library/ModernModuleLibraryPlugin.js +8 -6
  209. package/lib/library/ModuleLibraryPlugin.js +2 -1
  210. package/lib/library/SystemLibraryPlugin.js +2 -1
  211. package/lib/library/UmdLibraryPlugin.js +66 -92
  212. package/lib/logging/Logger.js +32 -4
  213. package/lib/logging/createConsoleLogger.js +12 -13
  214. package/lib/logging/runtime.js +7 -8
  215. package/lib/logging/truncateArgs.js +5 -8
  216. package/lib/node/NodeWatchFileSystem.js +3 -18
  217. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  218. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  219. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/nodeConsole.js +22 -22
  221. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  222. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  223. package/lib/optimize/ConcatenatedModule.js +81 -51
  224. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  225. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  226. package/lib/optimize/InnerGraph.js +17 -17
  227. package/lib/optimize/InnerGraphPlugin.js +8 -7
  228. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  229. package/lib/optimize/MangleExportsPlugin.js +1 -0
  230. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
  231. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  232. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  233. package/lib/optimize/RealContentHashPlugin.js +7 -10
  234. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  235. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  236. package/lib/optimize/SplitChunksPlugin.js +34 -30
  237. package/lib/performance/SizeLimitsPlugin.js +2 -2
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  240. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  241. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  242. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  243. package/lib/rules/RuleSetCompiler.js +41 -22
  244. package/lib/rules/UseEffectRulePlugin.js +36 -32
  245. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  246. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  247. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  248. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  249. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  250. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  251. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  252. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  253. package/lib/schemes/DataUriPlugin.js +1 -1
  254. package/lib/schemes/HttpUriPlugin.js +241 -126
  255. package/lib/serialization/BinaryMiddleware.js +44 -28
  256. package/lib/serialization/DateObjectSerializer.js +1 -0
  257. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  258. package/lib/serialization/FileMiddleware.js +154 -106
  259. package/lib/serialization/MapObjectSerializer.js +2 -1
  260. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  261. package/lib/serialization/ObjectMiddleware.js +52 -56
  262. package/lib/serialization/PlainObjectSerializer.js +32 -6
  263. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  264. package/lib/serialization/Serializer.js +4 -5
  265. package/lib/serialization/SerializerMiddleware.js +6 -6
  266. package/lib/serialization/SetObjectSerializer.js +2 -1
  267. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  268. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  269. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  270. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  271. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  272. package/lib/sharing/utils.js +15 -27
  273. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  274. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  275. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  276. package/lib/stats/StatsFactory.js +127 -56
  277. package/lib/stats/StatsPrinter.js +75 -44
  278. package/lib/util/ArrayHelpers.js +8 -4
  279. package/lib/util/ArrayQueue.js +1 -1
  280. package/lib/util/AsyncQueue.js +31 -12
  281. package/lib/util/IterableHelpers.js +3 -4
  282. package/lib/util/LazyBucketSortedSet.js +60 -44
  283. package/lib/util/LazySet.js +13 -0
  284. package/lib/util/MapHelpers.js +1 -3
  285. package/lib/util/ParallelismFactorCalculator.js +1 -1
  286. package/lib/util/Queue.js +1 -1
  287. package/lib/util/Semaphore.js +4 -7
  288. package/lib/util/SetHelpers.js +5 -5
  289. package/lib/util/SortableSet.js +4 -3
  290. package/lib/util/StackedCacheMap.js +4 -6
  291. package/lib/util/StackedMap.js +1 -3
  292. package/lib/util/StringXor.js +0 -5
  293. package/lib/util/TupleQueue.js +1 -1
  294. package/lib/util/TupleSet.js +15 -5
  295. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  296. package/lib/util/WeakTupleMap.js +19 -21
  297. package/lib/util/binarySearchBounds.js +5 -12
  298. package/lib/util/chainedImports.js +1 -1
  299. package/lib/util/cleverMerge.js +21 -19
  300. package/lib/util/comparators.js +57 -52
  301. package/lib/util/compileBooleanMatcher.js +3 -6
  302. package/lib/util/conventions.js +8 -11
  303. package/lib/util/createHash.js +9 -6
  304. package/lib/util/deprecation.js +22 -12
  305. package/lib/util/deterministicGrouping.js +19 -26
  306. package/lib/util/findGraphRoots.js +2 -2
  307. package/lib/util/fs.js +32 -32
  308. package/lib/util/hash/md4.js +2 -2
  309. package/lib/util/hash/wasm-hash.js +7 -7
  310. package/lib/util/hash/xxhash64.js +2 -2
  311. package/lib/util/identifier.js +81 -59
  312. package/lib/util/memoize.js +8 -10
  313. package/lib/util/mergeScope.js +6 -9
  314. package/lib/util/nonNumericOnlyHash.js +2 -2
  315. package/lib/util/numberHash.js +1 -6
  316. package/lib/util/objectToMap.js +0 -1
  317. package/lib/util/propertyAccess.js +2 -5
  318. package/lib/util/propertyName.js +1 -3
  319. package/lib/util/registerExternalSerializer.js +1 -1
  320. package/lib/util/runtime.js +109 -113
  321. package/lib/util/semver.js +29 -27
  322. package/lib/util/serialization.js +16 -1
  323. package/lib/util/smartGrouping.js +5 -5
  324. package/lib/util/source.js +1 -1
  325. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  326. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  327. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  328. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  329. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  330. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  331. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  333. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  334. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  335. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  336. package/package.json +18 -17
  337. package/schemas/WebpackOptions.check.js +1 -1
  338. package/schemas/WebpackOptions.json +5 -0
  339. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  340. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  341. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  343. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  344. package/types.d.ts +681 -355
@@ -10,6 +10,7 @@ const util = require("util");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
11
  const memoize = require("./util/memoize");
12
12
 
13
+ /** @typedef {import("tapable").Tap} Tap */
13
14
  /** @typedef {import("webpack-sources").ConcatSource} ConcatSource */
14
15
  /** @typedef {import("webpack-sources").Source} Source */
15
16
  /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
@@ -17,15 +18,24 @@ const memoize = require("./util/memoize");
17
18
  /** @typedef {import("./Chunk")} Chunk */
18
19
  /** @typedef {import("./Compilation")} Compilation */
19
20
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
21
+ /** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
20
22
  /** @typedef {import("./Module")} Module} */
21
23
  /** @typedef {import("./util/Hash")} Hash} */
22
24
  /** @typedef {import("./DependencyTemplates")} DependencyTemplates} */
23
25
  /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderContext} RenderContext} */
26
+ /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext} */
27
+ /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkHashContext} ChunkHashContext} */
24
28
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate} */
25
29
  /** @typedef {import("./ModuleGraph")} ModuleGraph} */
26
30
  /** @typedef {import("./ChunkGraph")} ChunkGraph} */
27
31
  /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions} */
28
32
  /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry} */
33
+ /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath} */
34
+ /** @typedef {import("./TemplatedPathPlugin").PathData} PathData} */
35
+ /**
36
+ * @template T
37
+ * @typedef {import("tapable").IfSet<T>} IfSet
38
+ */
29
39
 
30
40
  const getJavascriptModulesPlugin = memoize(() =>
31
41
  require("./javascript/JavascriptModulesPlugin")
@@ -40,7 +50,6 @@ const getLoadScriptRuntimeModule = memoize(() =>
40
50
  // TODO webpack 6 remove this class
41
51
  class MainTemplate {
42
52
  /**
43
- *
44
53
  * @param {OutputOptions} outputOptions output options for the MainTemplate
45
54
  * @param {Compilation} compilation the compilation
46
55
  */
@@ -50,6 +59,11 @@ class MainTemplate {
50
59
  this.hooks = Object.freeze({
51
60
  renderManifest: {
52
61
  tap: util.deprecate(
62
+ /**
63
+ * @template AdditionalOptions
64
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
65
+ * @param {function(RenderManifestEntry[], RenderManifestOptions): RenderManifestEntry[]} fn fn
66
+ */
53
67
  (options, fn) => {
54
68
  compilation.hooks.renderManifest.tap(
55
69
  options,
@@ -79,6 +93,11 @@ class MainTemplate {
79
93
  },
80
94
  require: {
81
95
  tap: util.deprecate(
96
+ /**
97
+ * @template AdditionalOptions
98
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
99
+ * @param {function(string, RenderBootstrapContext): string} fn fn
100
+ */
82
101
  (options, fn) => {
83
102
  getJavascriptModulesPlugin()
84
103
  .getCompilationHooks(compilation)
@@ -111,6 +130,11 @@ class MainTemplate {
111
130
  },
112
131
  render: {
113
132
  tap: util.deprecate(
133
+ /**
134
+ * @template AdditionalOptions
135
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
136
+ * @param {function(Source, Chunk, string | undefined, ModuleTemplate, DependencyTemplates): Source} fn fn
137
+ */
114
138
  (options, fn) => {
115
139
  getJavascriptModulesPlugin()
116
140
  .getCompilationHooks(compilation)
@@ -138,6 +162,11 @@ class MainTemplate {
138
162
  },
139
163
  renderWithEntry: {
140
164
  tap: util.deprecate(
165
+ /**
166
+ * @template AdditionalOptions
167
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
168
+ * @param {function(Source, Chunk, string | undefined): Source} fn fn
169
+ */
141
170
  (options, fn) => {
142
171
  getJavascriptModulesPlugin()
143
172
  .getCompilationHooks(compilation)
@@ -159,6 +188,11 @@ class MainTemplate {
159
188
  },
160
189
  assetPath: {
161
190
  tap: util.deprecate(
191
+ /**
192
+ * @template AdditionalOptions
193
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
194
+ * @param {function(string, object, AssetInfo | undefined): string} fn fn
195
+ */
162
196
  (options, fn) => {
163
197
  compilation.hooks.assetPath.tap(options, fn);
164
198
  },
@@ -166,15 +200,23 @@ class MainTemplate {
166
200
  "DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
167
201
  ),
168
202
  call: util.deprecate(
169
- (filename, options) => {
170
- return compilation.getAssetPath(filename, options);
171
- },
203
+ /**
204
+ * @param {TemplatePath} filename used to get asset path with hash
205
+ * @param {PathData} options context data
206
+ * @returns {string} interpolated path
207
+ */
208
+ (filename, options) => compilation.getAssetPath(filename, options),
172
209
  "MainTemplate.hooks.assetPath is deprecated (use Compilation.hooks.assetPath instead)",
173
210
  "DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
174
211
  )
175
212
  },
176
213
  hash: {
177
214
  tap: util.deprecate(
215
+ /**
216
+ * @template AdditionalOptions
217
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
218
+ * @param {function(Hash): void} fn fn
219
+ */
178
220
  (options, fn) => {
179
221
  compilation.hooks.fullHash.tap(options, fn);
180
222
  },
@@ -184,6 +226,11 @@ class MainTemplate {
184
226
  },
185
227
  hashForChunk: {
186
228
  tap: util.deprecate(
229
+ /**
230
+ * @template AdditionalOptions
231
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
232
+ * @param {function(Hash, Chunk): void} fn fn
233
+ */
187
234
  (options, fn) => {
188
235
  getJavascriptModulesPlugin()
189
236
  .getCompilationHooks(compilation)
@@ -259,7 +306,8 @@ class MainTemplate {
259
306
  * @param {string} hash the hash
260
307
  * @param {number=} length length of the hash
261
308
  * @returns {string} generated code
262
- */ (hash, length) => {
309
+ */
310
+ (hash, length) => {
263
311
  if (length) {
264
312
  return `${RuntimeGlobals.getFullHash} ? ${
265
313
  RuntimeGlobals.getFullHash
@@ -273,31 +321,36 @@ class MainTemplate {
273
321
 
274
322
  this.getPublicPath = util.deprecate(
275
323
  /**
276
- *
277
- * @param {object} options get public path options
278
- * @returns {string} hook call
279
- */ options => {
280
- return compilation.getAssetPath(
281
- compilation.outputOptions.publicPath,
324
+ * @param {PathData} options context data
325
+ * @returns {string} interpolated path
326
+ */ options =>
327
+ compilation.getAssetPath(
328
+ /** @type {string} */
329
+ (compilation.outputOptions.publicPath),
282
330
  options
283
- );
284
- },
331
+ ),
285
332
  "MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)",
286
333
  "DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH"
287
334
  );
288
335
 
289
336
  this.getAssetPath = util.deprecate(
290
- (path, options) => {
291
- return compilation.getAssetPath(path, options);
292
- },
337
+ /**
338
+ * @param {TemplatePath} path used to get asset path with hash
339
+ * @param {PathData} options context data
340
+ * @returns {string} interpolated path
341
+ */
342
+ (path, options) => compilation.getAssetPath(path, options),
293
343
  "MainTemplate.getAssetPath is deprecated (use Compilation.getAssetPath instead)",
294
344
  "DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH"
295
345
  );
296
346
 
297
347
  this.getAssetPathWithInfo = util.deprecate(
298
- (path, options) => {
299
- return compilation.getAssetPathWithInfo(path, options);
300
- },
348
+ /**
349
+ * @param {TemplatePath} path used to get asset path with hash
350
+ * @param {PathData} options context data
351
+ * @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
352
+ */
353
+ (path, options) => compilation.getAssetPathWithInfo(path, options),
301
354
  "MainTemplate.getAssetPathWithInfo is deprecated (use Compilation.getAssetPath instead)",
302
355
  "DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH_WITH_INFO"
303
356
  );
package/lib/Module.js CHANGED
@@ -18,10 +18,12 @@ const makeSerializable = require("./util/makeSerializable");
18
18
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
19
19
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
20
20
  /** @typedef {import("./Chunk")} Chunk */
21
+ /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
21
22
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
22
23
  /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
23
24
  /** @typedef {import("./Compilation")} Compilation */
24
25
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
26
+ /** @typedef {import("./Compilation").ValueCacheVersion} ValueCacheVersion */
25
27
  /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
26
28
  /** @typedef {import("./Dependency")} Dependency */
27
29
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
@@ -81,7 +83,7 @@ const makeSerializable = require("./util/makeSerializable");
81
83
  * @typedef {object} CodeGenerationResult
82
84
  * @property {Map<string, Source>} sources the resulting sources for all source types
83
85
  * @property {Map<string, any>=} data the resulting data for all source types
84
- * @property {ReadOnlyRuntimeRequirements} runtimeRequirements the runtime requirements
86
+ * @property {ReadOnlyRuntimeRequirements | null} runtimeRequirements the runtime requirements
85
87
  * @property {string=} hash a hash of the code generation result (will be automatically calculated from sources and runtimeRequirements if not provided)
86
88
  */
87
89
 
@@ -112,7 +114,7 @@ const makeSerializable = require("./util/makeSerializable");
112
114
  * @property {LazySet<string>=} contextDependencies
113
115
  * @property {LazySet<string>=} missingDependencies
114
116
  * @property {LazySet<string>=} buildDependencies
115
- * @property {(Map<string, string | Set<string>>)=} valueDependencies
117
+ * @property {(Map<string, ValueCacheVersion>)=} valueDependencies
116
118
  * @property {TODO=} hash
117
119
  * @property {Record<string, Source>=} assets
118
120
  * @property {Map<string, AssetInfo | undefined>=} assetsInfo
@@ -151,12 +153,11 @@ const deprecatedNeedRebuild = util.deprecate(
151
153
  * @param {NeedBuildContext} context context info
152
154
  * @returns {boolean} true, when rebuild is needed
153
155
  */
154
- (module, context) => {
155
- return module.needRebuild(
156
+ (module, context) =>
157
+ module.needRebuild(
156
158
  context.fileSystemInfo.getDeprecatedFileTimestamps(),
157
159
  context.fileSystemInfo.getDeprecatedContextTimestamps()
158
- );
159
- },
160
+ ),
160
161
  "Module.needRebuild is deprecated in favor of Module.needBuild",
161
162
  "DEP_WEBPACK_MODULE_NEED_REBUILD"
162
163
  );
@@ -214,6 +215,9 @@ class Module extends DependenciesBlock {
214
215
 
215
216
  // TODO remove in webpack 6
216
217
  // BACKWARD-COMPAT START
218
+ /**
219
+ * @returns {ModuleId | null} module id
220
+ */
217
221
  get id() {
218
222
  return ChunkGraph.getChunkGraphForModule(
219
223
  this,
@@ -222,6 +226,9 @@ class Module extends DependenciesBlock {
222
226
  ).getModuleId(this);
223
227
  }
224
228
 
229
+ /**
230
+ * @param {ModuleId} value value
231
+ */
225
232
  set id(value) {
226
233
  if (value === "") {
227
234
  this.needId = false;
@@ -865,9 +872,8 @@ class Module extends DependenciesBlock {
865
872
  // Better override this method to return the correct types
866
873
  if (this.source === Module.prototype.source) {
867
874
  return DEFAULT_TYPES_UNKNOWN;
868
- } else {
869
- return DEFAULT_TYPES_JS;
870
875
  }
876
+ return DEFAULT_TYPES_JS;
871
877
  }
872
878
 
873
879
  /**
@@ -899,7 +905,11 @@ class Module extends DependenciesBlock {
899
905
  };
900
906
  const sources = this.codeGeneration(codeGenContext).sources;
901
907
 
902
- return type ? sources.get(type) : sources.get(first(this.getSourceTypes()));
908
+ return /** @type {Source} */ (
909
+ type
910
+ ? sources.get(type)
911
+ : sources.get(/** @type {string} */ (first(this.getSourceTypes())))
912
+ );
903
913
  }
904
914
 
905
915
  /* istanbul ignore next */
@@ -1105,6 +1115,8 @@ class Module extends DependenciesBlock {
1105
1115
  makeSerializable(Module, "webpack/lib/Module");
1106
1116
 
1107
1117
  // TODO remove in webpack 6
1118
+ // eslint-disable-next-line no-warning-comments
1119
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
1108
1120
  Object.defineProperty(Module.prototype, "hasEqualsChunks", {
1109
1121
  get() {
1110
1122
  throw new Error(
@@ -1114,6 +1126,8 @@ Object.defineProperty(Module.prototype, "hasEqualsChunks", {
1114
1126
  });
1115
1127
 
1116
1128
  // TODO remove in webpack 6
1129
+ // eslint-disable-next-line no-warning-comments
1130
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
1117
1131
  Object.defineProperty(Module.prototype, "isUsed", {
1118
1132
  get() {
1119
1133
  throw new Error(
@@ -1159,6 +1173,8 @@ Object.defineProperty(Module.prototype, "warnings", {
1159
1173
  });
1160
1174
 
1161
1175
  // TODO remove in webpack 6
1176
+ // eslint-disable-next-line no-warning-comments
1177
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
1162
1178
  Object.defineProperty(Module.prototype, "used", {
1163
1179
  get() {
1164
1180
  throw new Error(
@@ -19,13 +19,9 @@ class ModuleBuildError extends WebpackError {
19
19
  */
20
20
  constructor(err, { from = null } = {}) {
21
21
  let message = "Module build failed";
22
- let details = undefined;
22
+ let details;
23
23
 
24
- if (from) {
25
- message += ` (from ${from}):\n`;
26
- } else {
27
- message += ": ";
28
- }
24
+ message += from ? ` (from ${from}):\n` : ": ";
29
25
 
30
26
  if (err !== null && typeof err === "object") {
31
27
  if (typeof err.stack === "string" && err.stack) {
@@ -36,11 +32,8 @@ class ModuleBuildError extends WebpackError {
36
32
  } else {
37
33
  details = stack;
38
34
 
39
- if (typeof err.message === "string" && err.message) {
40
- message += err.message;
41
- } else {
42
- message += err;
43
- }
35
+ message +=
36
+ typeof err.message === "string" && err.message ? err.message : err;
44
37
  }
45
38
  } else if (typeof err.message === "string" && err.message) {
46
39
  message += err.message;
@@ -30,11 +30,11 @@ class ModuleDependencyError extends WebpackError {
30
30
  /** error is not (de)serialized, so it might be undefined after deserialization */
31
31
  this.error = err;
32
32
 
33
- if (err && /** @type {any} */ (err).hideStack) {
34
- this.stack =
35
- /** @type {string} */ (err.stack).split("\n").slice(1).join("\n") +
36
- "\n\n" +
37
- this.stack;
33
+ if (err && /** @type {any} */ (err).hideStack && err.stack) {
34
+ this.stack = /** @type {string} */ `${err.stack
35
+ .split("\n")
36
+ .slice(1)
37
+ .join("\n")}\n\n${this.stack}`;
38
38
  }
39
39
  }
40
40
  }
@@ -30,11 +30,11 @@ class ModuleDependencyWarning extends WebpackError {
30
30
  /** error is not (de)serialized, so it might be undefined after deserialization */
31
31
  this.error = err;
32
32
 
33
- if (err && /** @type {any} */ (err).hideStack) {
34
- this.stack =
35
- /** @type {string} */ (err.stack).split("\n").slice(1).join("\n") +
36
- "\n\n" +
37
- this.stack;
33
+ if (err && /** @type {any} */ (err).hideStack && err.stack) {
34
+ this.stack = /** @type {string} */ `${err.stack
35
+ .split("\n")
36
+ .slice(1)
37
+ .join("\n")}\n\n${this.stack}`;
38
38
  }
39
39
  }
40
40
  }
@@ -20,11 +20,7 @@ class ModuleError extends WebpackError {
20
20
  constructor(err, { from = null } = {}) {
21
21
  let message = "Module Error";
22
22
 
23
- if (from) {
24
- message += ` (from ${from}):\n`;
25
- } else {
26
- message += ": ";
27
- }
23
+ message += from ? ` (from ${from}):\n` : ": ";
28
24
 
29
25
  if (err && typeof err === "object" && err.message) {
30
26
  message += err.message;
@@ -17,7 +17,7 @@ const memoize = require("./util/memoize");
17
17
  /** @typedef {string | RegExp | (string | RegExp)[]} Matcher */
18
18
  /** @typedef {{test?: Matcher, include?: Matcher, exclude?: Matcher }} MatchObject */
19
19
 
20
- const ModuleFilenameHelpers = exports;
20
+ const ModuleFilenameHelpers = module.exports;
21
21
 
22
22
  // TODO webpack 6: consider removing these
23
23
  ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
@@ -54,12 +54,10 @@ ModuleFilenameHelpers.REGEXP_NAMESPACE = /\[namespace\]/gi;
54
54
  * @param {string} token the token to search for
55
55
  * @returns {ReturnStringCallback} a function that returns the part of the string after the token
56
56
  */
57
- const getAfter = (strFn, token) => {
58
- return () => {
59
- const str = strFn();
60
- const idx = str.indexOf(token);
61
- return idx < 0 ? "" : str.slice(idx);
62
- };
57
+ const getAfter = (strFn, token) => () => {
58
+ const str = strFn();
59
+ const idx = str.indexOf(token);
60
+ return idx < 0 ? "" : str.slice(idx);
63
61
  };
64
62
 
65
63
  /**
@@ -68,12 +66,10 @@ const getAfter = (strFn, token) => {
68
66
  * @param {string} token the token to search for
69
67
  * @returns {ReturnStringCallback} a function that returns the part of the string before the token
70
68
  */
71
- const getBefore = (strFn, token) => {
72
- return () => {
73
- const str = strFn();
74
- const idx = str.lastIndexOf(token);
75
- return idx < 0 ? "" : str.slice(0, idx);
76
- };
69
+ const getBefore = (strFn, token) => () => {
70
+ const str = strFn();
71
+ const idx = str.lastIndexOf(token);
72
+ return idx < 0 ? "" : str.slice(0, idx);
77
73
  };
78
74
 
79
75
  /**
@@ -82,14 +78,14 @@ const getBefore = (strFn, token) => {
82
78
  * @param {string | Hash=} hashFunction the hash function to use
83
79
  * @returns {ReturnStringCallback} a function that returns the hash of the string
84
80
  */
85
- const getHash = (strFn, hashFunction = "md4") => {
86
- return () => {
81
+ const getHash =
82
+ (strFn, hashFunction = "md4") =>
83
+ () => {
87
84
  const hash = createHash(hashFunction);
88
85
  hash.update(strFn());
89
86
  const digest = /** @type {string} */ (hash.digest("hex"));
90
87
  return digest.slice(0, 4);
91
88
  };
92
- };
93
89
 
94
90
  /**
95
91
  * Returns a function that returns the string with the token replaced with the replacement
@@ -108,7 +104,7 @@ const asRegExp = test => {
108
104
  if (typeof test === "string") {
109
105
  // Escape special characters in the string to prevent them from being interpreted as special characters in a regular expression. Do this by
110
106
  // adding a backslash before each special character
111
- test = new RegExp("^" + test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"));
107
+ test = new RegExp(`^${test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}`);
112
108
  }
113
109
  return test;
114
110
  };
@@ -143,7 +139,6 @@ const lazyObject = obj => {
143
139
  const SQUARE_BRACKET_TAG_REGEXP = /\[\\*([\w-]+)\\*\]/gi;
144
140
 
145
141
  /**
146
- *
147
142
  * @param {Module | string} module the module
148
143
  * @param {TODO} options options
149
144
  * @param {object} contextInfo context info
@@ -153,6 +148,7 @@ const SQUARE_BRACKET_TAG_REGEXP = /\[\\*([\w-]+)\\*\]/gi;
153
148
  * @returns {string} the filename
154
149
  */
155
150
  ModuleFilenameHelpers.createFilename = (
151
+ // eslint-disable-next-line default-param-last
156
152
  module = "",
157
153
  options,
158
154
  { requestShortener, chunkGraph, hashFunction = "md4" }
@@ -213,9 +209,9 @@ ModuleFilenameHelpers.createFilename = (
213
209
  if (typeof opts.moduleFilenameTemplate === "function") {
214
210
  return opts.moduleFilenameTemplate(
215
211
  lazyObject({
216
- identifier: identifier,
217
- shortIdentifier: shortIdentifier,
218
- resource: resource,
212
+ identifier,
213
+ shortIdentifier,
214
+ resource,
219
215
  resourcePath: memoize(resourcePath),
220
216
  absoluteResourcePath: memoize(absoluteResourcePath),
221
217
  loaders: memoize(loaders),
@@ -285,13 +281,11 @@ ModuleFilenameHelpers.createFilename = (
285
281
  * Replaces duplicate items in an array with new values generated by a callback function.
286
282
  * The callback function is called with the duplicate item, the index of the duplicate item, and the number of times the item has been replaced.
287
283
  * The callback function should return the new value for the duplicate item.
288
- *
289
284
  * @template T
290
285
  * @param {T[]} array the array with duplicates to be replaced
291
286
  * @param {(duplicateItem: T, duplicateItemIndex: number, numberOfTimesReplaced: number) => T} fn callback function to generate new values for the duplicate items
292
287
  * @param {(firstElement:T, nextElement:T) => -1 | 0 | 1} [comparator] optional comparator function to sort the duplicate items
293
288
  * @returns {T[]} the array with duplicates replaced
294
- *
295
289
  * @example
296
290
  * ```js
297
291
  * const array = ["a", "b", "c", "a", "b", "a"];
@@ -303,33 +297,30 @@ ModuleFilenameHelpers.replaceDuplicates = (array, fn, comparator) => {
303
297
  const countMap = Object.create(null);
304
298
  const posMap = Object.create(null);
305
299
 
306
- array.forEach((item, idx) => {
300
+ for (const [idx, item] of array.entries()) {
307
301
  countMap[item] = countMap[item] || [];
308
302
  countMap[item].push(idx);
309
303
  posMap[item] = 0;
310
- });
304
+ }
311
305
  if (comparator) {
312
- Object.keys(countMap).forEach(item => {
306
+ for (const item of Object.keys(countMap)) {
313
307
  countMap[item].sort(comparator);
314
- });
308
+ }
315
309
  }
316
310
  return array.map((item, i) => {
317
311
  if (countMap[item].length > 1) {
318
312
  if (comparator && countMap[item][0] === i) return item;
319
313
  return fn(item, i, posMap[item]++);
320
- } else {
321
- return item;
322
314
  }
315
+ return item;
323
316
  });
324
317
  };
325
318
 
326
319
  /**
327
320
  * Tests if a string matches a RegExp or an array of RegExp.
328
- *
329
321
  * @param {string} str string to test
330
322
  * @param {Matcher} test value which will be used to match against the string
331
323
  * @returns {boolean} true, when the RegExp matches
332
- *
333
324
  * @example
334
325
  * ```js
335
326
  * ModuleFilenameHelpers.matchPart("foo.js", "foo"); // true
@@ -349,9 +340,8 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
349
340
 
350
341
  if (Array.isArray(test)) {
351
342
  return test.map(asRegExp).some(regExp => regExp.test(str));
352
- } else {
353
- return asRegExp(test).test(str);
354
343
  }
344
+ return asRegExp(test).test(str);
355
345
  };
356
346
 
357
347
  /**
@@ -361,7 +351,6 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
361
351
  * - `exclude`: a RegExp or an array of RegExp
362
352
  *
363
353
  * The `test` property is tested first, then `include` and then `exclude`.
364
- *
365
354
  * @param {MatchObject} obj a match object to test against the string
366
355
  * @param {string} str string to test against the matching object
367
356
  * @returns {boolean} true, when the object matches
@@ -381,20 +370,14 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
381
370
  * ```
382
371
  */
383
372
  ModuleFilenameHelpers.matchObject = (obj, str) => {
384
- if (obj.test) {
385
- if (!ModuleFilenameHelpers.matchPart(str, obj.test)) {
386
- return false;
387
- }
373
+ if (obj.test && !ModuleFilenameHelpers.matchPart(str, obj.test)) {
374
+ return false;
388
375
  }
389
- if (obj.include) {
390
- if (!ModuleFilenameHelpers.matchPart(str, obj.include)) {
391
- return false;
392
- }
376
+ if (obj.include && !ModuleFilenameHelpers.matchPart(str, obj.include)) {
377
+ return false;
393
378
  }
394
- if (obj.exclude) {
395
- if (ModuleFilenameHelpers.matchPart(str, obj.exclude)) {
396
- return false;
397
- }
379
+ if (obj.exclude && ModuleFilenameHelpers.matchPart(str, obj.exclude)) {
380
+ return false;
398
381
  }
399
382
  return true;
400
383
  };
@@ -36,7 +36,7 @@ const getConnectionsByOriginModule = set => {
36
36
  /** @type {Module | 0} */
37
37
  let lastModule = 0;
38
38
  /** @type {ModuleGraphConnection[] | undefined} */
39
- let lastList = undefined;
39
+ let lastList;
40
40
  for (const connection of set) {
41
41
  const { originModule } = connection;
42
42
  if (lastModule === originModule) {
@@ -67,7 +67,7 @@ const getConnectionsByModule = set => {
67
67
  /** @type {Module | 0} */
68
68
  let lastModule = 0;
69
69
  /** @type {ModuleGraphConnection[] | undefined} */
70
- let lastList = undefined;
70
+ let lastList;
71
71
  for (const connection of set) {
72
72
  const { module } = connection;
73
73
  if (lastModule === module) {
@@ -445,7 +445,7 @@ class ModuleGraph {
445
445
  }
446
446
  }
447
447
  this._dependencyMap.set(dependency, null);
448
- return undefined;
448
+ return;
449
449
  }
450
450
  return connection === null ? undefined : connection;
451
451
  }
@@ -851,12 +851,13 @@ class ModuleGraph {
851
851
  const moduleGraph = moduleGraphForModuleMap.get(module);
852
852
  if (!moduleGraph)
853
853
  throw new Error(
854
- deprecateMessage +
855
- "There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)"
854
+ `${
855
+ deprecateMessage
856
+ }There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
856
857
  );
857
858
  return moduleGraph;
858
859
  },
859
- deprecateMessage + ": Use new ModuleGraph API",
860
+ `${deprecateMessage}: Use new ModuleGraph API`,
860
861
  deprecationCode
861
862
  );
862
863
  deprecateMap.set(deprecateMessage, newFn);
@@ -73,7 +73,7 @@ class ModuleGraphConnection {
73
73
  this.resolvedModule = module;
74
74
  this.module = module;
75
75
  this.weak = weak;
76
- this.conditional = !!condition;
76
+ this.conditional = Boolean(condition);
77
77
  this._active = condition !== false;
78
78
  /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
79
79
  this.condition = condition || undefined;
@@ -135,11 +135,6 @@ class ModuleGraphConnection {
135
135
  return Array.from(this.explanations).join(" ");
136
136
  }
137
137
 
138
- // TODO webpack 5 remove
139
- get active() {
140
- throw new Error("Use getActiveState instead");
141
- }
142
-
143
138
  /**
144
139
  * @param {RuntimeSpec} runtime the runtime
145
140
  * @returns {boolean} true, if the connection is active
@@ -187,6 +182,11 @@ class ModuleGraphConnection {
187
182
  this._active = value;
188
183
  }
189
184
 
185
+ // TODO webpack 5 remove
186
+ get active() {
187
+ throw new Error("Use getActiveState instead");
188
+ }
189
+
190
190
  set active(value) {
191
191
  throw new Error("Use setActive instead");
192
192
  }