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
@@ -8,6 +8,7 @@
8
8
  const { ConcatSource, RawSource, CachedSource } = require("webpack-sources");
9
9
  const { UsageState } = require("./ExportsInfo");
10
10
  const Template = require("./Template");
11
+ const CssModulesPlugin = require("./css/CssModulesPlugin");
11
12
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
12
13
 
13
14
  /** @typedef {import("webpack-sources").Source} Source */
@@ -84,7 +85,7 @@ const printExportsInfoToSource = (
84
85
  for (const exportInfo of printedExports) {
85
86
  const target = exportInfo.getTarget(moduleGraph);
86
87
  source.add(
87
- Template.toComment(
88
+ `${Template.toComment(
88
89
  `${indent}export ${JSON.stringify(exportInfo.name).slice(
89
90
  1,
90
91
  -1
@@ -99,12 +100,12 @@ const printExportsInfoToSource = (
99
100
  }`
100
101
  : ""
101
102
  }`
102
- ) + "\n"
103
+ )}\n`
103
104
  );
104
105
  if (exportInfo.exportsInfo) {
105
106
  printExportsInfoToSource(
106
107
  source,
107
- indent + " ",
108
+ `${indent} `,
108
109
  exportInfo.exportsInfo,
109
110
  moduleGraph,
110
111
  requestShortener,
@@ -115,9 +116,9 @@ const printExportsInfoToSource = (
115
116
 
116
117
  if (alreadyPrintedExports) {
117
118
  source.add(
118
- Template.toComment(
119
+ `${Template.toComment(
119
120
  `${indent}... (${alreadyPrintedExports} already listed exports)`
120
- ) + "\n"
121
+ )}\n`
121
122
  );
122
123
  }
123
124
 
@@ -133,13 +134,13 @@ const printExportsInfoToSource = (
133
134
  ? "other exports"
134
135
  : "exports";
135
136
  source.add(
136
- Template.toComment(
137
+ `${Template.toComment(
137
138
  `${indent}${title} [${otherExportsInfo.getProvidedInfo()}] [${otherExportsInfo.getUsedInfo()}]${
138
139
  target
139
140
  ? ` -> ${target.module.readableIdentifier(requestShortener)}`
140
141
  : ""
141
142
  }`
142
- ) + "\n"
143
+ )}\n`
143
144
  );
144
145
  }
145
146
  }
@@ -155,6 +156,7 @@ class ModuleInfoHeaderPlugin {
155
156
  constructor(verbose = true) {
156
157
  this._verbose = verbose;
157
158
  }
159
+
158
160
  /**
159
161
  * @param {Compiler} compiler the compiler
160
162
  * @returns {void}
@@ -162,8 +164,9 @@ class ModuleInfoHeaderPlugin {
162
164
  apply(compiler) {
163
165
  const { _verbose: verbose } = this;
164
166
  compiler.hooks.compilation.tap("ModuleInfoHeaderPlugin", compilation => {
165
- const hooks = JavascriptModulesPlugin.getCompilationHooks(compilation);
166
- hooks.renderModulePackage.tap(
167
+ const javascriptHooks =
168
+ JavascriptModulesPlugin.getCompilationHooks(compilation);
169
+ javascriptHooks.renderModulePackage.tap(
167
170
  "ModuleInfoHeaderPlugin",
168
171
  (
169
172
  moduleSource,
@@ -194,11 +197,7 @@ class ModuleInfoHeaderPlugin {
194
197
  const source = new ConcatSource();
195
198
  let header = cacheEntry.header;
196
199
  if (header === undefined) {
197
- const req = module.readableIdentifier(requestShortener);
198
- const reqStr = req.replace(/\*\//g, "*_/");
199
- const reqStrStar = "*".repeat(reqStr.length);
200
- const headerStr = `/*!****${reqStrStar}****!*\\\n !*** ${reqStr} ***!\n \\****${reqStrStar}****/\n`;
201
- header = new RawSource(headerStr);
200
+ header = this.generateHeader(module, requestShortener);
202
201
  cacheEntry.header = header;
203
202
  }
204
203
  source.add(header);
@@ -206,11 +205,11 @@ class ModuleInfoHeaderPlugin {
206
205
  const exportsType = /** @type {BuildMeta} */ (module.buildMeta)
207
206
  .exportsType;
208
207
  source.add(
209
- Template.toComment(
208
+ `${Template.toComment(
210
209
  exportsType
211
210
  ? `${exportsType} exports`
212
211
  : "unknown exports (runtime-defined)"
213
- ) + "\n"
212
+ )}\n`
214
213
  );
215
214
  if (exportsType) {
216
215
  const exportsInfo = moduleGraph.getExportsInfo(module);
@@ -223,40 +222,93 @@ class ModuleInfoHeaderPlugin {
223
222
  );
224
223
  }
225
224
  source.add(
226
- Template.toComment(
225
+ `${Template.toComment(
227
226
  `runtime requirements: ${joinIterableWithComma(
228
227
  chunkGraph.getModuleRuntimeRequirements(module, chunk.runtime)
229
228
  )}`
230
- ) + "\n"
229
+ )}\n`
231
230
  );
232
231
  const optimizationBailout =
233
232
  moduleGraph.getOptimizationBailout(module);
234
233
  if (optimizationBailout) {
235
234
  for (const text of optimizationBailout) {
236
- let code;
237
- if (typeof text === "function") {
238
- code = text(requestShortener);
239
- } else {
240
- code = text;
241
- }
242
- source.add(Template.toComment(`${code}`) + "\n");
235
+ const code =
236
+ typeof text === "function" ? text(requestShortener) : text;
237
+ source.add(`${Template.toComment(`${code}`)}\n`);
243
238
  }
244
239
  }
245
240
  source.add(moduleSource);
246
241
  return source;
242
+ }
243
+ source.add(moduleSource);
244
+ const cachedSource = new CachedSource(source);
245
+ cacheEntry.full.set(moduleSource, cachedSource);
246
+ return cachedSource;
247
+ }
248
+ );
249
+ javascriptHooks.chunkHash.tap(
250
+ "ModuleInfoHeaderPlugin",
251
+ (_chunk, hash) => {
252
+ hash.update("ModuleInfoHeaderPlugin");
253
+ hash.update("1");
254
+ }
255
+ );
256
+ const cssHooks = CssModulesPlugin.getCompilationHooks(compilation);
257
+ cssHooks.renderModulePackage.tap(
258
+ "ModuleInfoHeaderPlugin",
259
+ (moduleSource, module, { runtimeTemplate }) => {
260
+ const { requestShortener } = runtimeTemplate;
261
+ let cacheEntry;
262
+ let cache = caches.get(requestShortener);
263
+ if (cache === undefined) {
264
+ caches.set(requestShortener, (cache = new WeakMap()));
265
+ cache.set(
266
+ module,
267
+ (cacheEntry = { header: undefined, full: new WeakMap() })
268
+ );
247
269
  } else {
248
- source.add(moduleSource);
249
- const cachedSource = new CachedSource(source);
250
- cacheEntry.full.set(moduleSource, cachedSource);
251
- return cachedSource;
270
+ cacheEntry = cache.get(module);
271
+ if (cacheEntry === undefined) {
272
+ cache.set(
273
+ module,
274
+ (cacheEntry = { header: undefined, full: new WeakMap() })
275
+ );
276
+ } else if (!verbose) {
277
+ const cachedSource = cacheEntry.full.get(moduleSource);
278
+ if (cachedSource !== undefined) return cachedSource;
279
+ }
252
280
  }
281
+ const source = new ConcatSource();
282
+ let header = cacheEntry.header;
283
+ if (header === undefined) {
284
+ header = this.generateHeader(module, requestShortener);
285
+ cacheEntry.header = header;
286
+ }
287
+ source.add(header);
288
+ source.add(moduleSource);
289
+ const cachedSource = new CachedSource(source);
290
+ cacheEntry.full.set(moduleSource, cachedSource);
291
+ return cachedSource;
253
292
  }
254
293
  );
255
- hooks.chunkHash.tap("ModuleInfoHeaderPlugin", (chunk, hash) => {
294
+ cssHooks.chunkHash.tap("ModuleInfoHeaderPlugin", (_chunk, hash) => {
256
295
  hash.update("ModuleInfoHeaderPlugin");
257
296
  hash.update("1");
258
297
  });
259
298
  });
260
299
  }
300
+
301
+ /**
302
+ * @param {Module} module the module
303
+ * @param {RequestShortener} requestShortener request shortener
304
+ * @returns {RawSource} the header
305
+ */
306
+ generateHeader(module, requestShortener) {
307
+ const req = module.readableIdentifier(requestShortener);
308
+ const reqStr = req.replace(/\*\//g, "*_/");
309
+ const reqStrStar = "*".repeat(reqStr.length);
310
+ const headerStr = `/*!****${reqStrStar}****!*\\\n !*** ${reqStr} ***!\n \\****${reqStrStar}****/\n`;
311
+ return new RawSource(headerStr);
312
+ }
261
313
  }
262
314
  module.exports = ModuleInfoHeaderPlugin;
@@ -16,13 +16,13 @@ const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]);
16
16
  class ModuleParseError extends WebpackError {
17
17
  /**
18
18
  * @param {string | Buffer} source source code
19
- * @param {Error&any} err the parse error
19
+ * @param {Error & any} err the parse error
20
20
  * @param {string[]} loaders the loaders used
21
21
  * @param {string} type module type
22
22
  */
23
23
  constructor(source, err, loaders, type) {
24
- let message = "Module parse failed: " + (err && err.message);
25
- let loc = undefined;
24
+ let message = `Module parse failed: ${err && err.message}`;
25
+ let loc;
26
26
 
27
27
  if (
28
28
  ((Buffer.isBuffer(source) && source.slice(0, 4).equals(WASM_HEADER)) ||
@@ -57,7 +57,7 @@ class ModuleParseError extends WebpackError {
57
57
  typeof err.loc === "object" &&
58
58
  typeof err.loc.line === "number"
59
59
  ) {
60
- var lineNumber = err.loc.line;
60
+ const lineNumber = err.loc.line;
61
61
 
62
62
  if (
63
63
  Buffer.isBuffer(source) ||
@@ -72,15 +72,14 @@ class ModuleParseError extends WebpackError {
72
72
  const theLine = sourceLines[lineNumber - 1];
73
73
  const linesAfter = sourceLines.slice(lineNumber, lineNumber + 2);
74
74
 
75
- message +=
76
- linesBefore.map(l => `\n| ${l}`).join("") +
77
- `\n> ${theLine}` +
78
- linesAfter.map(l => `\n| ${l}`).join("");
75
+ message += `${linesBefore
76
+ .map(l => `\n| ${l}`)
77
+ .join("")}\n> ${theLine}${linesAfter.map(l => `\n| ${l}`).join("")}`;
79
78
  }
80
79
 
81
80
  loc = { start: err.loc };
82
81
  } else if (err && err.stack) {
83
- message += "\n" + err.stack;
82
+ message += `\n${err.stack}`;
84
83
  }
85
84
 
86
85
  super(message);
@@ -17,7 +17,7 @@ class ModuleRestoreError extends WebpackError {
17
17
  constructor(module, err) {
18
18
  let message = "Module restore failed: ";
19
19
  /** @type {string | undefined} */
20
- let details = undefined;
20
+ const details = undefined;
21
21
  if (err !== null && typeof err === "object") {
22
22
  if (typeof err.stack === "string" && err.stack) {
23
23
  const stack = err.stack;
@@ -17,7 +17,7 @@ class ModuleStoreError extends WebpackError {
17
17
  constructor(module, err) {
18
18
  let message = "Module storing failed: ";
19
19
  /** @type {string | undefined} */
20
- let details = undefined;
20
+ const details = undefined;
21
21
  if (err !== null && typeof err === "object") {
22
22
  if (typeof err.stack === "string" && err.stack) {
23
23
  const stack = err.stack;
@@ -8,6 +8,7 @@
8
8
  const util = require("util");
9
9
  const memoize = require("./util/memoize");
10
10
 
11
+ /** @typedef {import("tapable").Tap} Tap */
11
12
  /** @typedef {import("webpack-sources").Source} Source */
12
13
  /** @typedef {import("./Chunk")} Chunk */
13
14
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
@@ -16,8 +17,14 @@ const memoize = require("./util/memoize");
16
17
  /** @typedef {import("./Module")} Module */
17
18
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
18
19
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
20
+ /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
19
21
  /** @typedef {import("./util/Hash")} Hash */
20
22
 
23
+ /**
24
+ * @template T
25
+ * @typedef {import("tapable").IfSet<T>} IfSet
26
+ */
27
+
21
28
  const getJavascriptModulesPlugin = memoize(() =>
22
29
  require("./javascript/JavascriptModulesPlugin")
23
30
  );
@@ -34,6 +41,11 @@ class ModuleTemplate {
34
41
  this.hooks = Object.freeze({
35
42
  content: {
36
43
  tap: util.deprecate(
44
+ /**
45
+ * @template AdditionalOptions
46
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
47
+ * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
48
+ */
37
49
  (options, fn) => {
38
50
  getJavascriptModulesPlugin()
39
51
  .getCompilationHooks(compilation)
@@ -54,6 +66,11 @@ class ModuleTemplate {
54
66
  },
55
67
  module: {
56
68
  tap: util.deprecate(
69
+ /**
70
+ * @template AdditionalOptions
71
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
72
+ * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
73
+ */
57
74
  (options, fn) => {
58
75
  getJavascriptModulesPlugin()
59
76
  .getCompilationHooks(compilation)
@@ -74,6 +91,11 @@ class ModuleTemplate {
74
91
  },
75
92
  render: {
76
93
  tap: util.deprecate(
94
+ /**
95
+ * @template AdditionalOptions
96
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
97
+ * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
98
+ */
77
99
  (options, fn) => {
78
100
  getJavascriptModulesPlugin()
79
101
  .getCompilationHooks(compilation)
@@ -94,6 +116,11 @@ class ModuleTemplate {
94
116
  },
95
117
  package: {
96
118
  tap: util.deprecate(
119
+ /**
120
+ * @template AdditionalOptions
121
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
122
+ * @param {function(Source, Module, ChunkRenderContext, DependencyTemplates): Source} fn fn
123
+ */
97
124
  (options, fn) => {
98
125
  getJavascriptModulesPlugin()
99
126
  .getCompilationHooks(compilation)
@@ -114,6 +141,11 @@ class ModuleTemplate {
114
141
  },
115
142
  hash: {
116
143
  tap: util.deprecate(
144
+ /**
145
+ * @template AdditionalOptions
146
+ * @param {string | Tap & IfSet<AdditionalOptions>} options options
147
+ * @param {function(Hash): void} fn fn
148
+ */
117
149
  (options, fn) => {
118
150
  compilation.hooks.fullHash.tap(options, fn);
119
151
  },
@@ -129,7 +161,7 @@ Object.defineProperty(ModuleTemplate.prototype, "runtimeTemplate", {
129
161
  get: util.deprecate(
130
162
  /**
131
163
  * @this {ModuleTemplate}
132
- * @returns {TODO} output options
164
+ * @returns {RuntimeTemplate} output options
133
165
  */
134
166
  function () {
135
167
  return this._runtimeTemplate;
@@ -31,7 +31,6 @@ const JSON_MODULE_TYPE = "json";
31
31
  /**
32
32
  * @type {Readonly<"webassembly/async">}
33
33
  * This is the module type used for WebAssembly modules. In webpack 5 they are always treated as async modules.
34
- *
35
34
  */
36
35
  const WEBASSEMBLY_MODULE_TYPE_ASYNC = "webassembly/async";
37
36
 
@@ -144,26 +143,26 @@ const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
144
143
  /** @typedef {string} UnknownModuleTypes */
145
144
  /** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
146
145
 
147
- exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
148
- exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
149
- exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
150
- exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
151
- exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
152
- exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
153
- exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
154
- exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
155
- exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
156
- exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC;
157
- exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
158
- exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
159
- exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
160
- exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
161
- exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
162
- exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
163
- exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
164
- exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
165
- exports.WEBPACK_MODULE_TYPE_PROVIDE = WEBPACK_MODULE_TYPE_PROVIDE;
166
- exports.WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE =
146
+ module.exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
147
+ module.exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
148
+ module.exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
149
+ module.exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
150
+ module.exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
151
+ module.exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
152
+ module.exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
153
+ module.exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
154
+ module.exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
155
+ module.exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC;
156
+ module.exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
157
+ module.exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
158
+ module.exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
159
+ module.exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
160
+ module.exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
161
+ module.exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
162
+ module.exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
163
+ module.exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
164
+ module.exports.WEBPACK_MODULE_TYPE_PROVIDE = WEBPACK_MODULE_TYPE_PROVIDE;
165
+ module.exports.WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE =
167
166
  WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE;
168
- exports.WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY =
167
+ module.exports.WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY =
169
168
  WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY;
@@ -20,11 +20,7 @@ class ModuleWarning extends WebpackError {
20
20
  constructor(warning, { from = null } = {}) {
21
21
  let message = "Module Warning";
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 (warning && typeof warning === "object" && warning.message) {
30
26
  message += warning.message;
@@ -91,6 +91,7 @@ module.exports = class MultiCompiler {
91
91
  const compiler = this.compilers[index];
92
92
  const compilerIndex = index;
93
93
  let compilerDone = false;
94
+ // eslint-disable-next-line no-loop-func
94
95
  compiler.hooks.done.tap("MultiCompiler", stats => {
95
96
  if (!compilerDone) {
96
97
  compilerDone = true;
@@ -103,6 +104,7 @@ module.exports = class MultiCompiler {
103
104
  );
104
105
  }
105
106
  });
107
+ // eslint-disable-next-line no-loop-func
106
108
  compiler.hooks.invalid.tap("MultiCompiler", () => {
107
109
  if (compilerDone) {
108
110
  compilerDone = false;
@@ -172,18 +174,6 @@ module.exports = class MultiCompiler {
172
174
  throw new Error("Cannot read inputFileSystem of a MultiCompiler");
173
175
  }
174
176
 
175
- get outputFileSystem() {
176
- throw new Error("Cannot read outputFileSystem of a MultiCompiler");
177
- }
178
-
179
- get watchFileSystem() {
180
- throw new Error("Cannot read watchFileSystem of a MultiCompiler");
181
- }
182
-
183
- get intermediateFileSystem() {
184
- throw new Error("Cannot read outputFileSystem of a MultiCompiler");
185
- }
186
-
187
177
  /**
188
178
  * @param {InputFileSystem} value the new input file system
189
179
  */
@@ -193,6 +183,10 @@ module.exports = class MultiCompiler {
193
183
  }
194
184
  }
195
185
 
186
+ get outputFileSystem() {
187
+ throw new Error("Cannot read outputFileSystem of a MultiCompiler");
188
+ }
189
+
196
190
  /**
197
191
  * @param {OutputFileSystem} value the new output file system
198
192
  */
@@ -202,6 +196,10 @@ module.exports = class MultiCompiler {
202
196
  }
203
197
  }
204
198
 
199
+ get watchFileSystem() {
200
+ throw new Error("Cannot read watchFileSystem of a MultiCompiler");
201
+ }
202
+
205
203
  /**
206
204
  * @param {WatchFileSystem} value the new watch file system
207
205
  */
@@ -220,6 +218,10 @@ module.exports = class MultiCompiler {
220
218
  }
221
219
  }
222
220
 
221
+ get intermediateFileSystem() {
222
+ throw new Error("Cannot read outputFileSystem of a MultiCompiler");
223
+ }
224
+
223
225
  /**
224
226
  * @param {string | (function(): string)} name name of the logger, or function called once to get the logger name
225
227
  * @returns {Logger} a logger with that name
@@ -263,16 +265,11 @@ module.exports = class MultiCompiler {
263
265
  * @param {{source: Compiler, target: Compiler}} e2 edge 2
264
266
  * @returns {number} result
265
267
  */
266
- const sortEdges = (e1, e2) => {
267
- return (
268
- /** @type {string} */
269
- (e1.source.name).localeCompare(
270
- /** @type {string} */ (e2.source.name)
271
- ) ||
272
- /** @type {string} */
273
- (e1.target.name).localeCompare(/** @type {string} */ (e2.target.name))
274
- );
275
- };
268
+ const sortEdges = (e1, e2) =>
269
+ /** @type {string} */
270
+ (e1.source.name).localeCompare(/** @type {string} */ (e2.source.name)) ||
271
+ /** @type {string} */
272
+ (e1.target.name).localeCompare(/** @type {string} */ (e2.target.name));
276
273
  for (const source of this.compilers) {
277
274
  const dependencies = this.dependencies.get(source);
278
275
  if (dependencies) {
@@ -340,8 +337,8 @@ module.exports = class MultiCompiler {
340
337
  * @returns {Compiler[]} compilers
341
338
  */
342
339
  const getReadyCompilers = () => {
343
- let readyCompilers = [];
344
- let list = remainingCompilers;
340
+ const readyCompilers = [];
341
+ const list = remainingCompilers;
345
342
  remainingCompilers = [];
346
343
  for (const c of list) {
347
344
  const dependencies = this.dependencies.get(c);
@@ -514,7 +511,7 @@ module.exports = class MultiCompiler {
514
511
 
515
512
  /** @type {SetupResult[]} */
516
513
  const setupResults = [];
517
- nodes.forEach((node, i) => {
514
+ for (const [i, node] of nodes.entries()) {
518
515
  setupResults.push(
519
516
  (node.setupResult = setup(
520
517
  node.compiler,
@@ -525,7 +522,7 @@ module.exports = class MultiCompiler {
525
522
  () => nodeInvalid(node)
526
523
  ))
527
524
  );
528
- });
525
+ }
529
526
  let processing = true;
530
527
  const processQueue = () => {
531
528
  if (processing) return;
@@ -533,6 +530,7 @@ module.exports = class MultiCompiler {
533
530
  process.nextTick(processQueueWorker);
534
531
  };
535
532
  const processQueueWorker = () => {
533
+ // eslint-disable-next-line no-unmodified-loop-condition
536
534
  while (running < parallelism && queue.length > 0 && !errored) {
537
535
  const node = /** @type {Node} */ (queue.dequeue());
538
536
  if (