webpack 5.92.1 → 5.94.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 (350) 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 +36 -21
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +76 -69
  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 +5 -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 +104 -64
  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 +132 -70
  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 +12 -10
  94. package/lib/UseStrictPlugin.js +8 -1
  95. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  96. package/lib/WatchIgnorePlugin.js +26 -9
  97. package/lib/Watching.js +10 -5
  98. package/lib/WebpackOptionsApply.js +89 -62
  99. package/lib/asset/AssetGenerator.js +107 -42
  100. package/lib/asset/AssetModulesPlugin.js +29 -23
  101. package/lib/asset/AssetSourceGenerator.js +2 -7
  102. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  103. package/lib/buildChunkGraph.js +14 -19
  104. package/lib/cache/IdleFileCachePlugin.js +4 -4
  105. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  106. package/lib/cache/PackFileCacheStrategy.js +51 -50
  107. package/lib/cache/ResolverCachePlugin.js +6 -6
  108. package/lib/cache/mergeEtags.js +16 -21
  109. package/lib/cli.js +148 -104
  110. package/lib/config/browserslistTargetHandler.js +16 -13
  111. package/lib/config/defaults.js +31 -28
  112. package/lib/config/normalization.js +335 -344
  113. package/lib/config/target.js +42 -52
  114. package/lib/container/ContainerEntryModule.js +2 -2
  115. package/lib/container/ContainerPlugin.js +1 -1
  116. package/lib/container/RemoteRuntimeModule.js +11 -8
  117. package/lib/container/options.js +18 -4
  118. package/lib/css/CssExportsGenerator.js +39 -40
  119. package/lib/css/CssGenerator.js +11 -14
  120. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  121. package/lib/css/CssModulesPlugin.js +127 -47
  122. package/lib/css/CssParser.js +20 -18
  123. package/lib/css/walkCssTokens.js +80 -95
  124. package/lib/debug/ProfilingPlugin.js +19 -20
  125. package/lib/dependencies/AMDDefineDependency.js +1 -1
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  127. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  128. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  129. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  130. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  131. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  132. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  133. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  134. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  135. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  136. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  137. package/lib/dependencies/ConstDependency.js +1 -1
  138. package/lib/dependencies/ContextDependency.js +1 -1
  139. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  140. package/lib/dependencies/ContextElementDependency.js +2 -2
  141. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  142. package/lib/dependencies/CssExportDependency.js +72 -9
  143. package/lib/dependencies/CssImportDependency.js +0 -2
  144. package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
  145. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  146. package/lib/dependencies/CssUrlDependency.js +4 -5
  147. package/lib/dependencies/DynamicExports.js +5 -5
  148. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  149. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  150. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  151. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  152. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  153. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  154. package/lib/dependencies/HarmonyExports.js +2 -2
  155. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  156. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  157. package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
  158. package/lib/dependencies/ImportDependency.js +1 -1
  159. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  160. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  161. package/lib/dependencies/ImportParserPlugin.js +39 -44
  162. package/lib/dependencies/JsonExportsDependency.js +22 -18
  163. package/lib/dependencies/LoaderPlugin.js +47 -36
  164. package/lib/dependencies/LocalModule.js +1 -1
  165. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  166. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  167. package/lib/dependencies/ProvidedDependency.js +1 -1
  168. package/lib/dependencies/PureExpressionDependency.js +6 -6
  169. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  170. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  171. package/lib/dependencies/SystemPlugin.js +1 -1
  172. package/lib/dependencies/URLDependency.js +3 -3
  173. package/lib/dependencies/URLPlugin.js +66 -12
  174. package/lib/dependencies/WorkerPlugin.js +25 -24
  175. package/lib/dependencies/processExportInfo.js +3 -1
  176. package/lib/electron/ElectronTargetPlugin.js +1 -0
  177. package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
  178. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  179. package/lib/formatLocation.js +1 -2
  180. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  181. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  182. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  183. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  184. package/lib/hmr/lazyCompilationBackend.js +64 -40
  185. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  186. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  187. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  188. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  189. package/lib/ids/IdHelpers.js +29 -39
  190. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  191. package/lib/index.js +1 -5
  192. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
  193. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  194. package/lib/javascript/ChunkHelpers.js +1 -1
  195. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
  196. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  197. package/lib/javascript/JavascriptGenerator.js +23 -7
  198. package/lib/javascript/JavascriptModulesPlugin.js +97 -70
  199. package/lib/javascript/JavascriptParser.js +179 -200
  200. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  201. package/lib/javascript/StartupHelpers.js +41 -13
  202. package/lib/json/JsonGenerator.js +7 -13
  203. package/lib/json/JsonModulesPlugin.js +1 -4
  204. package/lib/json/JsonParser.js +5 -3
  205. package/lib/library/AmdLibraryPlugin.js +12 -16
  206. package/lib/library/AssignLibraryPlugin.js +9 -11
  207. package/lib/library/EnableLibraryPlugin.js +25 -15
  208. package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
  209. package/lib/library/JsonpLibraryPlugin.js +2 -1
  210. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  211. package/lib/library/ModuleLibraryPlugin.js +2 -1
  212. package/lib/library/SystemLibraryPlugin.js +2 -1
  213. package/lib/library/UmdLibraryPlugin.js +66 -92
  214. package/lib/logging/Logger.js +32 -4
  215. package/lib/logging/createConsoleLogger.js +12 -13
  216. package/lib/logging/runtime.js +7 -8
  217. package/lib/logging/truncateArgs.js +5 -8
  218. package/lib/node/NodeWatchFileSystem.js +3 -18
  219. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  221. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  222. package/lib/node/nodeConsole.js +22 -22
  223. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  224. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  225. package/lib/optimize/ConcatenatedModule.js +144 -61
  226. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  227. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  228. package/lib/optimize/InnerGraph.js +17 -17
  229. package/lib/optimize/InnerGraphPlugin.js +8 -7
  230. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  231. package/lib/optimize/MangleExportsPlugin.js +1 -0
  232. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  233. package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
  234. package/lib/optimize/RealContentHashPlugin.js +7 -10
  235. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  236. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  237. package/lib/optimize/SplitChunksPlugin.js +34 -30
  238. package/lib/performance/SizeLimitsPlugin.js +2 -2
  239. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
  240. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  241. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  242. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  243. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  244. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  245. package/lib/rules/RuleSetCompiler.js +41 -22
  246. package/lib/rules/UseEffectRulePlugin.js +36 -32
  247. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  248. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  249. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  250. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  251. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  253. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  254. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  255. package/lib/schemes/DataUriPlugin.js +1 -1
  256. package/lib/schemes/HttpUriPlugin.js +241 -126
  257. package/lib/serialization/BinaryMiddleware.js +44 -28
  258. package/lib/serialization/DateObjectSerializer.js +1 -0
  259. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  260. package/lib/serialization/FileMiddleware.js +154 -106
  261. package/lib/serialization/MapObjectSerializer.js +2 -1
  262. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  263. package/lib/serialization/ObjectMiddleware.js +52 -56
  264. package/lib/serialization/PlainObjectSerializer.js +32 -6
  265. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  266. package/lib/serialization/Serializer.js +4 -5
  267. package/lib/serialization/SerializerMiddleware.js +6 -6
  268. package/lib/serialization/SetObjectSerializer.js +2 -1
  269. package/lib/sharing/ConsumeSharedModule.js +19 -14
  270. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  271. package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
  272. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  273. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  274. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  275. package/lib/sharing/utils.js +15 -27
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  277. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  279. package/lib/stats/StatsFactory.js +127 -56
  280. package/lib/stats/StatsPrinter.js +75 -44
  281. package/lib/util/ArrayHelpers.js +8 -4
  282. package/lib/util/ArrayQueue.js +1 -1
  283. package/lib/util/AsyncQueue.js +31 -12
  284. package/lib/util/IterableHelpers.js +3 -4
  285. package/lib/util/LazyBucketSortedSet.js +60 -44
  286. package/lib/util/LazySet.js +1 -0
  287. package/lib/util/MapHelpers.js +1 -3
  288. package/lib/util/ParallelismFactorCalculator.js +1 -1
  289. package/lib/util/Queue.js +1 -1
  290. package/lib/util/Semaphore.js +4 -7
  291. package/lib/util/SetHelpers.js +5 -5
  292. package/lib/util/SortableSet.js +4 -3
  293. package/lib/util/StackedCacheMap.js +4 -6
  294. package/lib/util/StackedMap.js +1 -3
  295. package/lib/util/StringXor.js +0 -5
  296. package/lib/util/TupleQueue.js +1 -1
  297. package/lib/util/TupleSet.js +15 -5
  298. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  299. package/lib/util/WeakTupleMap.js +19 -21
  300. package/lib/util/binarySearchBounds.js +5 -12
  301. package/lib/util/chainedImports.js +1 -1
  302. package/lib/util/cleverMerge.js +21 -19
  303. package/lib/util/comparators.js +57 -52
  304. package/lib/util/compileBooleanMatcher.js +3 -6
  305. package/lib/util/conventions.js +10 -13
  306. package/lib/util/createHash.js +9 -6
  307. package/lib/util/deprecation.js +22 -12
  308. package/lib/util/deterministicGrouping.js +19 -26
  309. package/lib/util/findGraphRoots.js +2 -2
  310. package/lib/util/fs.js +31 -31
  311. package/lib/util/hash/md4.js +2 -2
  312. package/lib/util/hash/wasm-hash.js +7 -7
  313. package/lib/util/hash/xxhash64.js +2 -2
  314. package/lib/util/identifier.js +81 -59
  315. package/lib/util/memoize.js +8 -10
  316. package/lib/util/mergeScope.js +6 -9
  317. package/lib/util/nonNumericOnlyHash.js +2 -2
  318. package/lib/util/numberHash.js +1 -6
  319. package/lib/util/objectToMap.js +0 -1
  320. package/lib/util/propertyAccess.js +2 -5
  321. package/lib/util/propertyName.js +1 -3
  322. package/lib/util/registerExternalSerializer.js +1 -1
  323. package/lib/util/runtime.js +103 -113
  324. package/lib/util/semver.js +29 -27
  325. package/lib/util/serialization.js +16 -1
  326. package/lib/util/smartGrouping.js +5 -5
  327. package/lib/util/source.js +1 -1
  328. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  329. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  330. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  331. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  332. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  333. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  334. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  336. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  337. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  338. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  339. package/package.json +17 -16
  340. package/schemas/WebpackOptions.check.js +1 -1
  341. package/schemas/WebpackOptions.json +17 -0
  342. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  343. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  344. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  345. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  346. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  347. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  348. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  349. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  350. package/types.d.ts +682 -347
@@ -116,15 +116,15 @@ const loaderToIdent = data => {
116
116
  return data.loader;
117
117
  }
118
118
  if (typeof data.options === "string") {
119
- return data.loader + "?" + data.options;
119
+ return `${data.loader}?${data.options}`;
120
120
  }
121
121
  if (typeof data.options !== "object") {
122
122
  throw new Error("loader options must be string or object");
123
123
  }
124
124
  if (data.ident) {
125
- return data.loader + "??" + data.ident;
125
+ return `${data.loader}??${data.ident}`;
126
126
  }
127
- return data.loader + "?" + JSON.stringify(data.options);
127
+ return `${data.loader}?${JSON.stringify(data.options)}`;
128
128
  };
129
129
 
130
130
  /**
@@ -135,7 +135,7 @@ const loaderToIdent = data => {
135
135
  const stringifyLoadersAndResource = (loaders, resource) => {
136
136
  let str = "";
137
137
  for (const loader of loaders) {
138
- str += loaderToIdent(loader) + "!";
138
+ str += `${loaderToIdent(loader)}!`;
139
139
  }
140
140
  return str + resource;
141
141
  };
@@ -145,16 +145,14 @@ const stringifyLoadersAndResource = (loaders, resource) => {
145
145
  * @param {(err?: null | Error) => void} callback callback
146
146
  * @returns {(err?: null | Error) => void} callback
147
147
  */
148
- const needCalls = (times, callback) => {
149
- return err => {
150
- if (--times === 0) {
151
- return callback(err);
152
- }
153
- if (err && times > 0) {
154
- times = NaN;
155
- return callback(err);
156
- }
157
- };
148
+ const needCalls = (times, callback) => err => {
149
+ if (--times === 0) {
150
+ return callback(err);
151
+ }
152
+ if (err && times > 0) {
153
+ times = Number.NaN;
154
+ return callback(err);
155
+ }
158
156
  };
159
157
 
160
158
  /**
@@ -173,18 +171,14 @@ const mergeGlobalOptions = (globalOptions, type, localOptions) => {
173
171
  current = current ? `${current}/${part}` : part;
174
172
  const options = globalOptions[current];
175
173
  if (typeof options === "object") {
176
- if (result === undefined) {
177
- result = options;
178
- } else {
179
- result = cachedCleverMerge(result, options);
180
- }
174
+ result =
175
+ result === undefined ? options : cachedCleverMerge(result, options);
181
176
  }
182
177
  }
183
178
  if (result === undefined) {
184
179
  return localOptions;
185
- } else {
186
- return cachedCleverMerge(result, localOptions);
187
180
  }
181
+ return cachedCleverMerge(result, localOptions);
188
182
  };
189
183
 
190
184
  // TODO webpack 6 remove
@@ -200,9 +194,7 @@ const deprecationChangedHookMessage = (name, hook) => {
200
194
  * @param {TODO} tapped tapped
201
195
  * @returns {string} name
202
196
  */
203
- tapped => {
204
- return tapped.name;
205
- }
197
+ tapped => tapped.name
206
198
  )
207
199
  .join(", ");
208
200
 
@@ -348,8 +340,10 @@ class NormalModuleFactory extends ModuleFactory {
348
340
 
349
341
  if (typeof result === "object")
350
342
  throw new Error(
351
- deprecationChangedHookMessage("resolve", this.hooks.resolve) +
352
- " Returning a Module object will result in this module used as result."
343
+ `${deprecationChangedHookMessage(
344
+ "resolve",
345
+ this.hooks.resolve
346
+ )} Returning a Module object will result in this module used as result.`
353
347
  );
354
348
 
355
349
  this.hooks.afterResolve.callAsync(resolveData, (err, result) => {
@@ -427,7 +421,7 @@ class NormalModuleFactory extends ModuleFactory {
427
421
  const loaderResolver = this.getResolver("loader");
428
422
 
429
423
  /** @type {ResourceData | undefined} */
430
- let matchResourceData = undefined;
424
+ let matchResourceData;
431
425
  /** @type {string} */
432
426
  let unresolvedResource;
433
427
  /** @type {ParsedLoaderRequest[]} */
@@ -538,8 +532,8 @@ class NormalModuleFactory extends ModuleFactory {
538
532
  item.ident = ident;
539
533
  }
540
534
  }
541
- } catch (e) {
542
- return callback(/** @type {Error} */ (e));
535
+ } catch (identErr) {
536
+ return callback(/** @type {Error} */ (identErr));
543
537
  }
544
538
 
545
539
  if (!resourceData) {
@@ -617,10 +611,15 @@ class NormalModuleFactory extends ModuleFactory {
617
611
  } else if (
618
612
  typeof r.value === "object" &&
619
613
  r.value !== null &&
620
- typeof settings[r.type] === "object" &&
621
- settings[r.type] !== null
614
+ typeof settings[
615
+ /** @type {keyof ModuleSettings} */ (r.type)
616
+ ] === "object" &&
617
+ settings[/** @type {keyof ModuleSettings} */ (r.type)] !== null
622
618
  ) {
623
- settings[r.type] = cachedCleverMerge(settings[r.type], r.value);
619
+ settings[r.type] = cachedCleverMerge(
620
+ settings[/** @type {keyof ModuleSettings} */ (r.type)],
621
+ r.value
622
+ );
624
623
  } else {
625
624
  settings[r.type] = r.value;
626
625
  }
@@ -652,7 +651,7 @@ class NormalModuleFactory extends ModuleFactory {
652
651
  }
653
652
  for (const loader of /** @type {LoaderItem[]} */ (preLoaders))
654
653
  allLoaders.push(loader);
655
- let type = /** @type {string} */ (settings.type);
654
+ const type = /** @type {string} */ (settings.type);
656
655
  const resolveOptions = settings.resolve;
657
656
  const layer = settings.layer;
658
657
  if (layer !== undefined && !layers) {
@@ -688,8 +687,8 @@ class NormalModuleFactory extends ModuleFactory {
688
687
  generatorOptions: settings.generator,
689
688
  resolveOptions
690
689
  });
691
- } catch (e) {
692
- return callback(/** @type {Error} */ (e));
690
+ } catch (createDataErr) {
691
+ return callback(/** @type {Error} */ (createDataErr));
693
692
  }
694
693
  callback();
695
694
  });
@@ -772,12 +771,17 @@ class NormalModuleFactory extends ModuleFactory {
772
771
  unresolvedResource,
773
772
  normalResolver,
774
773
  resolveContext,
775
- (err, resolvedResource, resolvedResourceResolveData) => {
774
+ (err, _resolvedResource, resolvedResourceResolveData) => {
776
775
  if (err) return continueCallback(err);
777
- if (resolvedResource !== false) {
776
+ if (_resolvedResource !== false) {
777
+ const resolvedResource =
778
+ /** @type {string} */
779
+ (_resolvedResource);
778
780
  resourceData = {
779
781
  resource: resolvedResource,
780
- data: resolvedResourceResolveData,
782
+ data:
783
+ /** @type {ResolveRequest} */
784
+ (resolvedResourceResolveData),
781
785
  ...cacheParseResource(resolvedResource)
782
786
  };
783
787
  }
@@ -1066,13 +1070,12 @@ Add the extension to the request.`
1066
1070
  /(\.[^.]+)(\?|$)/,
1067
1071
  "$2"
1068
1072
  );
1069
- if (resolver.options.extensions.has(match[1])) {
1070
- hint = `Did you mean '${fixedRequest}'?`;
1071
- } else {
1072
- hint = `Did you mean '${fixedRequest}'? Also note that '${match[1]}' is not in 'resolve.extensions' yet and need to be added for this to work?`;
1073
- }
1073
+ hint = resolver.options.extensions.has(match[1])
1074
+ ? `Did you mean '${fixedRequest}'?`
1075
+ : `Did you mean '${fixedRequest}'? Also note that '${match[1]}' is not in 'resolve.extensions' yet and need to be added for this to work?`;
1074
1076
  } else {
1075
- hint = `Did you mean to omit the extension or to remove 'resolve.enforceExtension'?`;
1077
+ hint =
1078
+ "Did you mean to omit the extension or to remove 'resolve.enforceExtension'?";
1076
1079
  }
1077
1080
  return callback(
1078
1081
  null,
@@ -1151,18 +1154,17 @@ If changing the source code is not an option there is also a resolve options cal
1151
1154
  if (
1152
1155
  err &&
1153
1156
  /^[^/]*$/.test(item.loader) &&
1154
- !/-loader$/.test(item.loader)
1157
+ !item.loader.endsWith("-loader")
1155
1158
  ) {
1156
1159
  return resolver.resolve(
1157
1160
  contextInfo,
1158
1161
  context,
1159
- item.loader + "-loader",
1162
+ `${item.loader}-loader`,
1160
1163
  resolveContext,
1161
1164
  err2 => {
1162
1165
  if (!err2) {
1163
1166
  err.message =
1164
- err.message +
1165
- "\n" +
1167
+ `${err.message}\n` +
1166
1168
  "BREAKING CHANGE: It's no longer allowed to omit the '-loader' suffix when using loaders.\n" +
1167
1169
  ` You need to specify '${item.loader}-loader' instead of '${item.loader}',\n` +
1168
1170
  " see https://webpack.js.org/migrate/3/#automatic-loader-module-name-extension-removed";
@@ -1173,7 +1175,9 @@ If changing the source code is not an option there is also a resolve options cal
1173
1175
  }
1174
1176
  if (err) return callback(err);
1175
1177
 
1176
- const parsedResult = this._parseResourceWithoutFragment(result);
1178
+ const parsedResult = this._parseResourceWithoutFragment(
1179
+ /** @type {string} */ (result)
1180
+ );
1177
1181
 
1178
1182
  const type = /\.mjs$/i.test(parsedResult.path)
1179
1183
  ? "module"
@@ -5,6 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- exports.STAGE_BASIC = -10;
9
- exports.STAGE_DEFAULT = 0;
10
- exports.STAGE_ADVANCED = 10;
8
+ module.exports.STAGE_BASIC = -10;
9
+ module.exports.STAGE_DEFAULT = 0;
10
+ module.exports.STAGE_ADVANCED = 10;
@@ -41,9 +41,7 @@ const validate = createSchemaValidation(
41
41
  * @param {number} c c
42
42
  * @returns {number} median
43
43
  */
44
- const median3 = (a, b, c) => {
45
- return a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
46
- };
44
+ const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
47
45
 
48
46
  /**
49
47
  * @param {boolean | null | undefined} profile need profile
@@ -78,11 +76,12 @@ const createDefaultHandler = (profile, logger) => {
78
76
  if (lastStateItem.value) {
79
77
  let reportState = lastStateItem.value;
80
78
  if (i > 0) {
81
- reportState = lastStateInfo[i - 1].value + " > " + reportState;
79
+ reportState = `${lastStateInfo[i - 1].value} > ${reportState}`;
82
80
  }
83
81
  const stateMsg = `${" | ".repeat(i)}${diff} ms ${reportState}`;
84
82
  const d = diff;
85
83
  // This depends on timing so we ignore it for coverage
84
+ /* eslint-disable no-lone-blocks */
86
85
  /* istanbul ignore next */
87
86
  {
88
87
  if (d > 10000) {
@@ -97,6 +96,7 @@ const createDefaultHandler = (profile, logger) => {
97
96
  logger.debug(stateMsg);
98
97
  }
99
98
  }
99
+ /* eslint-enable no-lone-blocks */
100
100
  }
101
101
  if (stateItem === undefined) {
102
102
  lastStateInfo.length = i;
@@ -191,14 +191,14 @@ class ProgressPlugin {
191
191
  const states = compiler.compilers.map(
192
192
  () => /** @type {[number, ...string[]]} */ ([0])
193
193
  );
194
- compiler.compilers.forEach((compiler, idx) => {
194
+ for (const [idx, item] of compiler.compilers.entries()) {
195
195
  new ProgressPlugin((p, msg, ...args) => {
196
196
  states[idx] = [p, msg, ...args];
197
197
  let sum = 0;
198
198
  for (const [p] of states) sum += p;
199
199
  handler(sum / states.length, `[${idx}] ${msg}`, ...args);
200
- }).apply(compiler);
201
- });
200
+ }).apply(item);
201
+ }
202
202
  }
203
203
 
204
204
  /**
@@ -507,7 +507,7 @@ class ProgressPlugin {
507
507
  afterSeal: "after seal"
508
508
  };
509
509
  const numberOfHooks = Object.keys(hooks).length;
510
- Object.keys(hooks).forEach((name, idx) => {
510
+ for (const [idx, name] of Object.keys(hooks).entries()) {
511
511
  const title = hooks[/** @type {keyof typeof hooks} */ (name)];
512
512
  const percentage = (idx / numberOfHooks) * 0.25 + 0.7;
513
513
  compilation.hooks[/** @type {keyof typeof hooks} */ (name)].intercept({
@@ -534,7 +534,7 @@ class ProgressPlugin {
534
534
  handler(percentage, "sealing", title, tap.name);
535
535
  }
536
536
  });
537
- });
537
+ }
538
538
  });
539
539
  compiler.hooks.make.intercept({
540
540
  name: "ProgressPlugin",
@@ -58,16 +58,16 @@ class ProvidePlugin {
58
58
  * @returns {void}
59
59
  */
60
60
  const handler = (parser, parserOptions) => {
61
- Object.keys(definitions).forEach(name => {
61
+ for (const name of Object.keys(definitions)) {
62
62
  const request =
63
63
  /** @type {string[]} */
64
64
  ([]).concat(definitions[name]);
65
65
  const splittedName = name.split(".");
66
66
  if (splittedName.length > 0) {
67
- splittedName.slice(1).forEach((_, i) => {
67
+ for (const [i, _] of splittedName.slice(1).entries()) {
68
68
  const name = splittedName.slice(0, i + 1).join(".");
69
69
  parser.hooks.canRename.for(name).tap(PLUGIN_NAME, approve);
70
- });
70
+ }
71
71
  }
72
72
 
73
73
  parser.hooks.expression.for(name).tap(PLUGIN_NAME, expr => {
@@ -100,7 +100,7 @@ class ProvidePlugin {
100
100
  parser.walkExpressions(expr.arguments);
101
101
  return true;
102
102
  });
103
- });
103
+ }
104
104
  };
105
105
  normalModuleFactory.hooks.parser
106
106
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)