webpack 5.100.2 → 5.101.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +12 -10
  2. package/bin/webpack.js +7 -7
  3. package/lib/APIPlugin.js +12 -14
  4. package/lib/AutomaticPrefetchPlugin.js +2 -2
  5. package/lib/BannerPlugin.js +4 -4
  6. package/lib/Cache.js +1 -1
  7. package/lib/CacheFacade.js +7 -7
  8. package/lib/CaseSensitiveModulesWarning.js +2 -2
  9. package/lib/Chunk.js +3 -3
  10. package/lib/ChunkGraph.js +63 -18
  11. package/lib/ChunkGroup.js +4 -4
  12. package/lib/CleanPlugin.js +19 -53
  13. package/lib/CodeGenerationResults.js +3 -3
  14. package/lib/CompatibilityPlugin.js +6 -6
  15. package/lib/Compilation.js +168 -116
  16. package/lib/Compiler.js +37 -37
  17. package/lib/ConcatenationScope.js +39 -1
  18. package/lib/ConstPlugin.js +11 -11
  19. package/lib/ContextExclusionPlugin.js +3 -3
  20. package/lib/ContextModule.js +12 -11
  21. package/lib/ContextModuleFactory.js +11 -11
  22. package/lib/ContextReplacementPlugin.js +5 -5
  23. package/lib/DefinePlugin.js +24 -22
  24. package/lib/DelegatedModuleFactoryPlugin.js +1 -1
  25. package/lib/Dependency.js +2 -1
  26. package/lib/DllEntryPlugin.js +1 -1
  27. package/lib/DllReferencePlugin.js +1 -1
  28. package/lib/DynamicEntryPlugin.js +3 -3
  29. package/lib/EntryPlugin.js +1 -1
  30. package/lib/EnvironmentPlugin.js +1 -1
  31. package/lib/ErrorHelpers.js +2 -2
  32. package/lib/EvalDevToolModulePlugin.js +2 -2
  33. package/lib/EvalSourceMapDevToolPlugin.js +5 -5
  34. package/lib/ExportsInfo.js +9 -9
  35. package/lib/ExportsInfoApiPlugin.js +2 -2
  36. package/lib/ExternalModule.js +163 -48
  37. package/lib/ExternalModuleFactoryPlugin.js +2 -2
  38. package/lib/ExternalsPlugin.js +45 -0
  39. package/lib/FileSystemInfo.js +64 -61
  40. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  41. package/lib/FlagDependencyExportsPlugin.js +7 -7
  42. package/lib/FlagDependencyUsagePlugin.js +4 -4
  43. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  44. package/lib/HotModuleReplacementPlugin.js +27 -27
  45. package/lib/IgnorePlugin.js +3 -3
  46. package/lib/IgnoreWarningsPlugin.js +4 -4
  47. package/lib/InitFragment.js +6 -0
  48. package/lib/InvalidDependenciesModuleWarning.js +1 -1
  49. package/lib/JavascriptMetaInfoPlugin.js +1 -1
  50. package/lib/LibManifestPlugin.js +2 -2
  51. package/lib/LoaderOptionsPlugin.js +1 -1
  52. package/lib/LoaderTargetPlugin.js +2 -2
  53. package/lib/MainTemplate.js +1 -1
  54. package/lib/Module.js +3 -2
  55. package/lib/ModuleFilenameHelpers.js +3 -3
  56. package/lib/ModuleGraph.js +23 -38
  57. package/lib/ModuleInfoHeaderPlugin.js +3 -3
  58. package/lib/ModuleParseError.js +5 -3
  59. package/lib/ModuleTemplate.js +3 -2
  60. package/lib/MultiCompiler.js +29 -24
  61. package/lib/MultiStats.js +18 -13
  62. package/lib/MultiWatching.js +1 -1
  63. package/lib/NoEmitOnErrorsPlugin.js +2 -2
  64. package/lib/NodeStuffPlugin.js +27 -15
  65. package/lib/NormalModule.js +23 -23
  66. package/lib/NormalModuleFactory.js +23 -21
  67. package/lib/NormalModuleReplacementPlugin.js +3 -3
  68. package/lib/PrefetchPlugin.js +1 -1
  69. package/lib/ProgressPlugin.js +11 -11
  70. package/lib/ProvidePlugin.js +2 -2
  71. package/lib/RecordIdsPlugin.js +3 -3
  72. package/lib/ResolverFactory.js +3 -3
  73. package/lib/RuntimeGlobals.js +20 -0
  74. package/lib/RuntimePlugin.js +16 -16
  75. package/lib/RuntimeTemplate.js +35 -26
  76. package/lib/SizeFormatHelpers.js +1 -1
  77. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -4
  78. package/lib/SourceMapDevToolPlugin.js +9 -9
  79. package/lib/Stats.js +2 -2
  80. package/lib/Template.js +1 -1
  81. package/lib/TemplatedPathPlugin.js +2 -2
  82. package/lib/UseStrictPlugin.js +1 -1
  83. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -1
  84. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  85. package/lib/WarnNoModeSetPlugin.js +1 -1
  86. package/lib/WatchIgnorePlugin.js +2 -2
  87. package/lib/Watching.js +12 -14
  88. package/lib/WebpackIsIncludedPlugin.js +2 -2
  89. package/lib/WebpackOptionsApply.js +3 -3
  90. package/lib/asset/AssetGenerator.js +1 -1
  91. package/lib/asset/AssetModulesPlugin.js +6 -6
  92. package/lib/async-modules/AsyncModuleHelpers.js +1 -1
  93. package/lib/async-modules/AwaitDependenciesInitFragment.js +36 -24
  94. package/lib/async-modules/InferAsyncModulesPlugin.js +3 -3
  95. package/lib/buildChunkGraph.js +5 -5
  96. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  97. package/lib/cache/IdleFileCachePlugin.js +5 -5
  98. package/lib/cache/PackFileCacheStrategy.js +20 -20
  99. package/lib/cache/ResolverCachePlugin.js +4 -4
  100. package/lib/cli.js +196 -14
  101. package/lib/config/browserslistTargetHandler.js +6 -6
  102. package/lib/config/defaults.js +23 -14
  103. package/lib/config/normalization.js +41 -38
  104. package/lib/config/target.js +4 -4
  105. package/lib/container/ContainerEntryModule.js +3 -3
  106. package/lib/container/ContainerPlugin.js +3 -3
  107. package/lib/container/ContainerReferencePlugin.js +3 -3
  108. package/lib/container/FallbackModule.js +1 -1
  109. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  110. package/lib/container/options.js +4 -4
  111. package/lib/css/CssGenerator.js +5 -3
  112. package/lib/css/CssLoadingRuntimeModule.js +1 -1
  113. package/lib/css/CssModulesPlugin.js +25 -22
  114. package/lib/css/CssParser.js +5 -5
  115. package/lib/css/walkCssTokens.js +9 -9
  116. package/lib/debug/ProfilingPlugin.js +5 -5
  117. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +4 -4
  118. package/lib/dependencies/AMDPlugin.js +3 -3
  119. package/lib/dependencies/AMDRequireArrayDependency.js +1 -1
  120. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +3 -3
  121. package/lib/dependencies/CommonJsExportRequireDependency.js +2 -2
  122. package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -10
  123. package/lib/dependencies/CommonJsImportsParserPlugin.js +21 -19
  124. package/lib/dependencies/CommonJsPlugin.js +2 -2
  125. package/lib/dependencies/ContextDependency.js +1 -1
  126. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  127. package/lib/dependencies/CssIcssExportDependency.js +2 -2
  128. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -2
  129. package/lib/dependencies/CssUrlDependency.js +4 -4
  130. package/lib/dependencies/DynamicExports.js +5 -5
  131. package/lib/dependencies/HarmonyAcceptDependency.js +91 -5
  132. package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
  133. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +17 -13
  134. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +7 -8
  135. package/lib/dependencies/HarmonyExportInitFragment.js +1 -1
  136. package/lib/dependencies/HarmonyExports.js +1 -1
  137. package/lib/dependencies/HarmonyImportDependency.js +28 -9
  138. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +56 -48
  139. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -5
  140. package/lib/dependencies/HarmonyImportSpecifierDependency.js +3 -4
  141. package/lib/dependencies/HarmonyModulesPlugin.js +2 -8
  142. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -1
  143. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -4
  144. package/lib/dependencies/ImportMetaPlugin.js +7 -7
  145. package/lib/dependencies/ImportParserPlugin.js +4 -4
  146. package/lib/dependencies/JsonExportsDependency.js +7 -2
  147. package/lib/dependencies/LoaderPlugin.js +4 -4
  148. package/lib/dependencies/ModuleDependency.js +2 -1
  149. package/lib/dependencies/ProvidedDependency.js +2 -2
  150. package/lib/dependencies/PureExpressionDependency.js +1 -1
  151. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  152. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -1
  153. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -3
  154. package/lib/dependencies/SystemPlugin.js +3 -3
  155. package/lib/dependencies/WorkerPlugin.js +5 -5
  156. package/lib/dependencies/getFunctionExpression.js +1 -1
  157. package/lib/esm/ExportWebpackRequireRuntimeModule.js +8 -1
  158. package/lib/esm/ModuleChunkFormatPlugin.js +35 -69
  159. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -6
  160. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +15 -11
  161. package/lib/formatLocation.js +2 -2
  162. package/lib/hmr/HotModuleReplacement.runtime.js +39 -27
  163. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -32
  164. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -1
  165. package/lib/hmr/LazyCompilationPlugin.js +6 -6
  166. package/lib/hmr/lazyCompilationBackend.js +6 -6
  167. package/lib/ids/ChunkModuleIdRangePlugin.js +4 -4
  168. package/lib/ids/DeterministicChunkIdsPlugin.js +5 -4
  169. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  170. package/lib/ids/HashedModuleIdsPlugin.js +1 -1
  171. package/lib/ids/IdHelpers.js +9 -9
  172. package/lib/ids/NamedChunkIdsPlugin.js +5 -5
  173. package/lib/ids/NamedModuleIdsPlugin.js +2 -2
  174. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  175. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  176. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -2
  177. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -4
  178. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  179. package/lib/index.js +18 -6
  180. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  181. package/lib/javascript/BasicEvaluatedExpression.js +3 -3
  182. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  183. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -21
  184. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -1
  185. package/lib/javascript/JavascriptGenerator.js +1 -1
  186. package/lib/javascript/JavascriptModulesPlugin.js +108 -54
  187. package/lib/javascript/JavascriptParser.js +80 -78
  188. package/lib/javascript/JavascriptParserHelpers.js +3 -3
  189. package/lib/javascript/StartupHelpers.js +2 -2
  190. package/lib/json/JsonGenerator.js +2 -2
  191. package/lib/json/JsonModulesPlugin.js +2 -2
  192. package/lib/library/AbstractLibraryPlugin.js +30 -3
  193. package/lib/library/AmdLibraryPlugin.js +3 -3
  194. package/lib/library/AssignLibraryPlugin.js +2 -2
  195. package/lib/library/EnableLibraryPlugin.js +2 -2
  196. package/lib/library/ModuleLibraryPlugin.js +49 -31
  197. package/lib/library/SystemLibraryPlugin.js +6 -4
  198. package/lib/library/UmdLibraryPlugin.js +14 -14
  199. package/lib/logging/createConsoleLogger.js +4 -4
  200. package/lib/logging/runtime.js +3 -3
  201. package/lib/logging/truncateArgs.js +4 -4
  202. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -2
  203. package/lib/node/NodeEnvironmentPlugin.js +1 -1
  204. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +16 -14
  205. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +7 -7
  206. package/lib/node/ReadFileCompileWasmPlugin.js +7 -7
  207. package/lib/node/RequireChunkLoadingRuntimeModule.js +13 -6
  208. package/lib/node/nodeConsole.js +2 -2
  209. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  210. package/lib/optimize/AggressiveSplittingPlugin.js +10 -10
  211. package/lib/optimize/ConcatenatedModule.js +186 -77
  212. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -2
  213. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  214. package/lib/optimize/InnerGraph.js +5 -5
  215. package/lib/optimize/InnerGraphPlugin.js +14 -12
  216. package/lib/optimize/LimitChunkCountPlugin.js +5 -5
  217. package/lib/optimize/MangleExportsPlugin.js +5 -5
  218. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
  219. package/lib/optimize/MinChunkSizePlugin.js +3 -3
  220. package/lib/optimize/ModuleConcatenationPlugin.js +45 -38
  221. package/lib/optimize/RealContentHashPlugin.js +23 -23
  222. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  223. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  224. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  225. package/lib/optimize/SideEffectsFlagPlugin.js +5 -5
  226. package/lib/optimize/SplitChunksPlugin.js +20 -20
  227. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  228. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  229. package/lib/performance/SizeLimitsPlugin.js +4 -4
  230. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  231. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -3
  232. package/lib/rules/BasicMatcherRulePlugin.js +1 -1
  233. package/lib/rules/RuleSetCompiler.js +10 -10
  234. package/lib/rules/UseEffectRulePlugin.js +2 -2
  235. package/lib/runtime/GetChunkFilenameRuntimeModule.js +19 -15
  236. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  237. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  238. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  239. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  240. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  241. package/lib/schemes/DataUriPlugin.js +3 -3
  242. package/lib/schemes/FileUriPlugin.js +1 -1
  243. package/lib/schemes/HttpUriPlugin.js +40 -36
  244. package/lib/schemes/VirtualUrlPlugin.js +1 -1
  245. package/lib/serialization/BinaryMiddleware.js +11 -11
  246. package/lib/serialization/FileMiddleware.js +18 -17
  247. package/lib/serialization/ObjectMiddleware.js +8 -8
  248. package/lib/serialization/Serializer.js +2 -2
  249. package/lib/serialization/SerializerMiddleware.js +2 -2
  250. package/lib/sharing/ConsumeSharedPlugin.js +4 -4
  251. package/lib/sharing/ProvideSharedPlugin.js +4 -4
  252. package/lib/sharing/SharePlugin.js +1 -1
  253. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  254. package/lib/stats/DefaultStatsFactoryPlugin.js +85 -80
  255. package/lib/stats/DefaultStatsPresetPlugin.js +15 -15
  256. package/lib/stats/DefaultStatsPrinterPlugin.js +87 -87
  257. package/lib/stats/StatsFactory.js +7 -7
  258. package/lib/stats/StatsPrinter.js +9 -9
  259. package/lib/url/URLParserPlugin.js +5 -5
  260. package/lib/util/AsyncQueue.js +4 -4
  261. package/lib/util/IterableHelpers.js +2 -2
  262. package/lib/util/LazyBucketSortedSet.js +3 -3
  263. package/lib/util/SetHelpers.js +2 -2
  264. package/lib/util/StackedCacheMap.js +1 -1
  265. package/lib/util/StackedMap.js +1 -1
  266. package/lib/util/TupleSet.js +1 -1
  267. package/lib/util/WeakTupleMap.js +1 -1
  268. package/lib/util/cleverMerge.js +8 -8
  269. package/lib/util/comparators.js +10 -10
  270. package/lib/util/compileBooleanMatcher.js +20 -20
  271. package/lib/util/concatenate.js +3 -3
  272. package/lib/util/conventions.js +4 -4
  273. package/lib/util/create-schema-validation.js +1 -1
  274. package/lib/util/createHash.js +1 -1
  275. package/lib/util/deprecation.js +4 -4
  276. package/lib/util/deterministicGrouping.js +7 -7
  277. package/lib/util/findGraphRoots.js +1 -1
  278. package/lib/util/fs.js +4 -4
  279. package/lib/util/identifier.js +14 -14
  280. package/lib/util/magicComment.js +5 -1
  281. package/lib/util/memoize.js +1 -1
  282. package/lib/util/processAsyncTree.js +2 -2
  283. package/lib/util/propertyName.js +1 -1
  284. package/lib/util/removeBOM.js +1 -1
  285. package/lib/util/runtime.js +6 -6
  286. package/lib/util/semver.js +16 -16
  287. package/lib/util/serialization.js +5 -5
  288. package/lib/util/smartGrouping.js +1 -1
  289. package/lib/validateSchema.js +2 -2
  290. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  291. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -1
  292. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  293. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +4 -4
  294. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +13 -9
  295. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  296. package/lib/wasm-sync/WebAssemblyGenerator.js +16 -17
  297. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -2
  298. package/lib/wasm-sync/WebAssemblyParser.js +2 -2
  299. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  300. package/lib/web/FetchCompileWasmPlugin.js +4 -4
  301. package/lib/web/JsonpChunkLoadingPlugin.js +2 -2
  302. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  303. package/lib/webpack.js +17 -12
  304. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -2
  305. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  306. package/package.json +16 -16
  307. package/schemas/WebpackOptions.check.js +1 -1
  308. package/schemas/WebpackOptions.json +4 -0
  309. package/types.d.ts +275 -64
@@ -354,38 +354,50 @@ module.exports = function () {
354
354
  };
355
355
 
356
356
  var outdatedModules = [];
357
- results.forEach(function (result) {
358
- if (result.apply) {
359
- var modules = result.apply(reportError);
360
- if (modules) {
361
- for (var i = 0; i < modules.length; i++) {
362
- outdatedModules.push(modules[i]);
363
- }
364
- }
365
- }
366
- });
367
357
 
368
- return Promise.all([disposePromise, applyPromise]).then(function () {
369
- // handle errors in accept handlers and self accepted module load
370
- if (error) {
371
- return setStatus("fail").then(function () {
372
- throw error;
373
- });
374
- }
358
+ var onAccepted = function () {
359
+ return Promise.all([disposePromise, applyPromise]).then(function () {
360
+ // handle errors in accept handlers and self accepted module load
361
+ if (error) {
362
+ return setStatus("fail").then(function () {
363
+ throw error;
364
+ });
365
+ }
375
366
 
376
- if (queuedInvalidatedModules) {
377
- return internalApply(options).then(function (list) {
378
- outdatedModules.forEach(function (moduleId) {
379
- if (list.indexOf(moduleId) < 0) list.push(moduleId);
367
+ if (queuedInvalidatedModules) {
368
+ return internalApply(options).then(function (list) {
369
+ outdatedModules.forEach(function (moduleId) {
370
+ if (list.indexOf(moduleId) < 0) list.push(moduleId);
371
+ });
372
+ return list;
380
373
  });
381
- return list;
382
- });
383
- }
374
+ }
384
375
 
385
- return setStatus("idle").then(function () {
386
- return outdatedModules;
376
+ return setStatus("idle").then(function () {
377
+ return outdatedModules;
378
+ });
387
379
  });
388
- });
380
+ };
381
+
382
+ return Promise.all(
383
+ results
384
+ .filter(function (result) {
385
+ return result.apply;
386
+ })
387
+ .map(function (result) {
388
+ return result.apply(reportError);
389
+ })
390
+ )
391
+ .then(function (applyResults) {
392
+ applyResults.forEach(function (modules) {
393
+ if (modules) {
394
+ for (var i = 0; i < modules.length; i++) {
395
+ outdatedModules.push(modules[i]);
396
+ }
397
+ }
398
+ });
399
+ })
400
+ .then(onAccepted);
389
401
  }
390
402
 
391
403
  function applyInvalidatedModules() {
@@ -281,6 +281,7 @@ module.exports = function () {
281
281
  }
282
282
  },
283
283
  apply: function (reportError) {
284
+ var acceptPromises = [];
284
285
  // insert new code
285
286
  for (var updateModuleId in appliedUpdate) {
286
287
  if ($hasOwnProperty$(appliedUpdate, updateModuleId)) {
@@ -317,8 +318,9 @@ module.exports = function () {
317
318
  }
318
319
  }
319
320
  for (var k = 0; k < callbacks.length; k++) {
321
+ var result;
320
322
  try {
321
- callbacks[k].call(null, moduleOutdatedDependencies);
323
+ result = callbacks[k].call(null, moduleOutdatedDependencies);
322
324
  } catch (err) {
323
325
  if (typeof errorHandlers[k] === "function") {
324
326
  try {
@@ -355,54 +357,63 @@ module.exports = function () {
355
357
  }
356
358
  }
357
359
  }
360
+ if (result && typeof result.then === "function") {
361
+ acceptPromises.push(result);
362
+ }
358
363
  }
359
364
  }
360
365
  }
361
366
  }
362
367
 
363
- // Load self accepted modules
364
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
365
- var item = outdatedSelfAcceptedModules[o];
366
- var moduleId = item.module;
367
- try {
368
- item.require(moduleId);
369
- } catch (err) {
370
- if (typeof item.errorHandler === "function") {
371
- try {
372
- item.errorHandler(err, {
373
- moduleId: moduleId,
374
- module: $moduleCache$[moduleId]
375
- });
376
- } catch (err1) {
368
+ var onAccepted = function () {
369
+ // Load self accepted modules
370
+ for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
371
+ var item = outdatedSelfAcceptedModules[o];
372
+ var moduleId = item.module;
373
+ try {
374
+ item.require(moduleId);
375
+ } catch (err) {
376
+ if (typeof item.errorHandler === "function") {
377
+ try {
378
+ item.errorHandler(err, {
379
+ moduleId: moduleId,
380
+ module: $moduleCache$[moduleId]
381
+ });
382
+ } catch (err1) {
383
+ if (options.onErrored) {
384
+ options.onErrored({
385
+ type: "self-accept-error-handler-errored",
386
+ moduleId: moduleId,
387
+ error: err1,
388
+ originalError: err
389
+ });
390
+ }
391
+ if (!options.ignoreErrored) {
392
+ reportError(err1);
393
+ reportError(err);
394
+ }
395
+ }
396
+ } else {
377
397
  if (options.onErrored) {
378
398
  options.onErrored({
379
- type: "self-accept-error-handler-errored",
399
+ type: "self-accept-errored",
380
400
  moduleId: moduleId,
381
- error: err1,
382
- originalError: err
401
+ error: err
383
402
  });
384
403
  }
385
404
  if (!options.ignoreErrored) {
386
- reportError(err1);
387
405
  reportError(err);
388
406
  }
389
407
  }
390
- } else {
391
- if (options.onErrored) {
392
- options.onErrored({
393
- type: "self-accept-errored",
394
- moduleId: moduleId,
395
- error: err
396
- });
397
- }
398
- if (!options.ignoreErrored) {
399
- reportError(err);
400
- }
401
408
  }
402
409
  }
403
- }
410
+ };
404
411
 
405
- return outdatedModules;
412
+ return Promise.all(acceptPromises)
413
+ .then(onAccepted)
414
+ .then(function () {
415
+ return outdatedModules;
416
+ });
406
417
  }
407
418
  };
408
419
  }
@@ -13,7 +13,7 @@ const Template = require("../Template");
13
13
  * @param {string} type unique identifier used for HMR runtime properties
14
14
  * @returns {string} HMR runtime code
15
15
  */
16
- const generateJavascriptHMR = type =>
16
+ const generateJavascriptHMR = (type) =>
17
17
  Template.getFunctionContent(
18
18
  require("../hmr/JavascriptHotModuleReplacement.runtime")
19
19
  )
@@ -382,7 +382,7 @@ class LazyCompilationPlugin {
382
382
  callback();
383
383
  });
384
384
  if (promise && promise.then) {
385
- promise.then(b => {
385
+ promise.then((b) => {
386
386
  backend = b;
387
387
  callback();
388
388
  }, callback);
@@ -395,7 +395,7 @@ class LazyCompilationPlugin {
395
395
  PLUGIN_NAME,
396
396
  (module, createData, resolveData) => {
397
397
  if (
398
- resolveData.dependencies.every(dep =>
398
+ resolveData.dependencies.every((dep) =>
399
399
  HMR_DEPENDENCY_TYPES.has(dep.type)
400
400
  )
401
401
  ) {
@@ -406,9 +406,9 @@ class LazyCompilationPlugin {
406
406
  /** @type {Module} */
407
407
  (compilation.moduleGraph.getParentModule(hmrDep));
408
408
  const isReferringToDynamicImport = originModule.blocks.some(
409
- block =>
409
+ (block) =>
410
410
  block.dependencies.some(
411
- dep =>
411
+ (dep) =>
412
412
  dep.type === "import()" &&
413
413
  /** @type {HarmonyImportDependency} */ (dep).request ===
414
414
  hmrDep.request
@@ -417,7 +417,7 @@ class LazyCompilationPlugin {
417
417
  if (!isReferringToDynamicImport) return module;
418
418
  } else if (
419
419
  !resolveData.dependencies.every(
420
- dep =>
420
+ (dep) =>
421
421
  HMR_DEPENDENCY_TYPES.has(dep.type) ||
422
422
  (this.imports &&
423
423
  (dep.type === "import()" ||
@@ -455,7 +455,7 @@ class LazyCompilationPlugin {
455
455
  );
456
456
  }
457
457
  );
458
- compiler.hooks.shutdown.tapAsync(PLUGIN_NAME, callback => {
458
+ compiler.hooks.shutdown.tapAsync(PLUGIN_NAME, (callback) => {
459
459
  backend.dispose(callback);
460
460
  });
461
461
  }
@@ -22,7 +22,7 @@
22
22
  * @param {Omit<LazyCompilationDefaultBackendOptions, "client"> & { client: NonNullable<LazyCompilationDefaultBackendOptions["client"]>}} options additional options for the backend
23
23
  * @returns {BackendHandler} backend
24
24
  */
25
- module.exports = options => (compiler, callback) => {
25
+ module.exports = (options) => (compiler, callback) => {
26
26
  const logger = compiler.getInfrastructureLogger("LazyCompilationBackend");
27
27
  const activeModules = new Map();
28
28
  const prefix = "/lazy-compilation-using-";
@@ -47,7 +47,7 @@ module.exports = options => (compiler, callback) => {
47
47
  const listen =
48
48
  typeof options.listen === "function"
49
49
  ? options.listen
50
- : server => {
50
+ : (server) => {
51
51
  let listen = options.listen;
52
52
  if (typeof listen === "object" && !("port" in listen)) {
53
53
  listen = { ...listen, port: undefined };
@@ -100,14 +100,14 @@ module.exports = options => (compiler, callback) => {
100
100
  let isClosing = false;
101
101
  /** @type {Set<import("net").Socket>} */
102
102
  const sockets = new Set();
103
- server.on("connection", socket => {
103
+ server.on("connection", (socket) => {
104
104
  sockets.add(socket);
105
105
  socket.on("close", () => {
106
106
  sockets.delete(socket);
107
107
  });
108
108
  if (isClosing) socket.destroy();
109
109
  });
110
- server.on("clientError", e => {
110
+ server.on("clientError", (e) => {
111
111
  if (e.message !== "Server is disposing") logger.warn(e);
112
112
  });
113
113
 
@@ -117,7 +117,7 @@ module.exports = options => (compiler, callback) => {
117
117
  * @param {Error} err error
118
118
  * @returns {void}
119
119
  */
120
- err => {
120
+ (err) => {
121
121
  if (err) return callback(err);
122
122
  const _addr = server.address();
123
123
  if (typeof _addr === "string") {
@@ -138,7 +138,7 @@ module.exports = options => (compiler, callback) => {
138
138
  isClosing = true;
139
139
  // Removing the listener is a workaround for a memory leak in node.js
140
140
  server.off("request", requestListener);
141
- server.close(err => {
141
+ server.close((err) => {
142
142
  callback(err);
143
143
  });
144
144
  for (const socket of sockets) {
@@ -39,13 +39,13 @@ class ChunkModuleIdRangePlugin {
39
39
  */
40
40
  apply(compiler) {
41
41
  const options = this.options;
42
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
42
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
43
43
  const moduleGraph = compilation.moduleGraph;
44
- compilation.hooks.moduleIds.tap(PLUGIN_NAME, modules => {
44
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, (modules) => {
45
45
  const chunkGraph = compilation.chunkGraph;
46
46
  const chunk = find(
47
47
  compilation.chunks,
48
- chunk => chunk.name === options.name
48
+ (chunk) => chunk.name === options.name
49
49
  );
50
50
  if (!chunk) {
51
51
  throw new Error(
@@ -72,7 +72,7 @@ class ChunkModuleIdRangePlugin {
72
72
  chunkModules = chunkGraph.getOrderedChunkModules(chunk, cmpFn);
73
73
  } else {
74
74
  chunkModules = [...modules]
75
- .filter(m => chunkGraph.isModuleInChunk(m, chunk))
75
+ .filter((m) => chunkGraph.isModuleInChunk(m, chunk))
76
76
  .sort(compareModulesByPreOrderIndexOrIdentifier(moduleGraph));
77
77
  }
78
78
 
@@ -37,8 +37,8 @@ class DeterministicChunkIdsPlugin {
37
37
  * @returns {void}
38
38
  */
39
39
  apply(compiler) {
40
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
41
- compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
40
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
41
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
42
42
  const chunkGraph = compilation.chunkGraph;
43
43
  const context = this.options.context
44
44
  ? this.options.context
@@ -49,8 +49,9 @@ class DeterministicChunkIdsPlugin {
49
49
 
50
50
  const usedIds = getUsedChunkIds(compilation);
51
51
  assignDeterministicIds(
52
- [...chunks].filter(chunk => chunk.id === null),
53
- chunk => getFullChunkName(chunk, chunkGraph, context, compiler.root),
52
+ [...chunks].filter((chunk) => chunk.id === null),
53
+ (chunk) =>
54
+ getFullChunkName(chunk, chunkGraph, context, compiler.root),
54
55
  compareNatural,
55
56
  (chunk, id) => {
56
57
  const size = usedIds.size;
@@ -43,7 +43,7 @@ class DeterministicModuleIdsPlugin {
43
43
  * @returns {void}
44
44
  */
45
45
  apply(compiler) {
46
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
46
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
47
47
  compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
48
48
  const chunkGraph = compilation.chunkGraph;
49
49
  const context = this.options.context
@@ -61,7 +61,7 @@ class DeterministicModuleIdsPlugin {
61
61
  );
62
62
  assignDeterministicIds(
63
63
  modules,
64
- module => getFullModuleName(module, context, compiler.root),
64
+ (module) => getFullModuleName(module, context, compiler.root),
65
65
  failOnConflict
66
66
  ? () => 0
67
67
  : compareModulesByPreOrderIndexOrIdentifier(
@@ -54,7 +54,7 @@ class HashedModuleIdsPlugin {
54
54
  */
55
55
  apply(compiler) {
56
56
  const options = this.options;
57
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
57
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
58
58
  compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
59
59
  const chunkGraph = compilation.chunkGraph;
60
60
  const context = this.options.context
@@ -33,7 +33,7 @@ const getHash = (str, len, hashFunction) => {
33
33
  * @param {string} str the string
34
34
  * @returns {string} string prefixed by an underscore if it is a number
35
35
  */
36
- const avoidNumber = str => {
36
+ const avoidNumber = (str) => {
37
37
  // max length of a number is 21 chars, bigger numbers a written as "...e+xx"
38
38
  if (str.length > 21) return str;
39
39
  const firstChar = str.charCodeAt(0);
@@ -54,7 +54,7 @@ const avoidNumber = str => {
54
54
  * @param {string} request the request
55
55
  * @returns {string} id representation
56
56
  */
57
- const requestToId = request =>
57
+ const requestToId = (request) =>
58
58
  request.replace(/^(\.\.?\/)+/, "").replace(/(^[.-]|[^a-zA-Z0-9_-])+/g, "_");
59
59
 
60
60
  /**
@@ -136,7 +136,7 @@ const getShortChunkName = (
136
136
  associatedObjectForCache
137
137
  ) => {
138
138
  const modules = chunkGraph.getChunkRootModules(chunk);
139
- const shortModuleNames = modules.map(m =>
139
+ const shortModuleNames = modules.map((m) =>
140
140
  requestToId(getShortModuleName(m, context, associatedObjectForCache))
141
141
  );
142
142
  chunk.idNameHints.sort();
@@ -164,10 +164,10 @@ const getLongChunkName = (
164
164
  associatedObjectForCache
165
165
  ) => {
166
166
  const modules = chunkGraph.getChunkRootModules(chunk);
167
- const shortModuleNames = modules.map(m =>
167
+ const shortModuleNames = modules.map((m) =>
168
168
  requestToId(getShortModuleName(m, context, associatedObjectForCache))
169
169
  );
170
- const longModuleNames = modules.map(m =>
170
+ const longModuleNames = modules.map((m) =>
171
171
  requestToId(
172
172
  getLongModuleName("", m, context, hashFunction, associatedObjectForCache)
173
173
  )
@@ -198,7 +198,7 @@ const getFullChunkName = (
198
198
  ) => {
199
199
  if (chunk.name) return chunk.name;
200
200
  const modules = chunkGraph.getChunkRootModules(chunk);
201
- const fullModuleNames = modules.map(m =>
201
+ const fullModuleNames = modules.map((m) =>
202
202
  makePathsRelative(context, m.identifier(), associatedObjectForCache)
203
203
  );
204
204
  return fullModuleNames.join();
@@ -259,7 +259,7 @@ const getUsedModuleIdsAndModules = (compilation, filter) => {
259
259
  * @param {Compilation} compilation the compilation
260
260
  * @returns {Set<string>} used chunk ids as strings
261
261
  */
262
- const getUsedChunkIds = compilation => {
262
+ const getUsedChunkIds = (compilation) => {
263
263
  /** @type {Set<string>} */
264
264
  const usedIds = new Set();
265
265
  if (compilation.usedChunkIds) {
@@ -413,7 +413,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
413
413
  /**
414
414
  * @param {Module} module the module
415
415
  */
416
- assignId = module => {
416
+ assignId = (module) => {
417
417
  if (chunkGraph.getModuleId(module) === null) {
418
418
  while (usedIds.has(String(nextId))) nextId++;
419
419
  chunkGraph.setModuleId(module, nextId++);
@@ -423,7 +423,7 @@ const assignAscendingModuleIds = (usedIds, modules, compilation) => {
423
423
  /**
424
424
  * @param {Module} module the module
425
425
  */
426
- assignId = module => {
426
+ assignId = (module) => {
427
427
  if (chunkGraph.getModuleId(module) === null) {
428
428
  chunkGraph.setModuleId(module, nextId++);
429
429
  }
@@ -42,24 +42,24 @@ class NamedChunkIdsPlugin {
42
42
  * @returns {void}
43
43
  */
44
44
  apply(compiler) {
45
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
45
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
46
46
  const hashFunction =
47
47
  /** @type {NonNullable<Output["hashFunction"]>} */
48
48
  (compilation.outputOptions.hashFunction);
49
- compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
49
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
50
50
  const chunkGraph = compilation.chunkGraph;
51
51
  const context = this.context ? this.context : compiler.context;
52
52
  const delimiter = this.delimiter;
53
53
 
54
54
  const unnamedChunks = assignNames(
55
- [...chunks].filter(chunk => {
55
+ [...chunks].filter((chunk) => {
56
56
  if (chunk.name) {
57
57
  chunk.id = chunk.name;
58
58
  chunk.ids = [chunk.name];
59
59
  }
60
60
  return chunk.id === null;
61
61
  }),
62
- chunk =>
62
+ (chunk) =>
63
63
  getShortChunkName(
64
64
  chunk,
65
65
  chunkGraph,
@@ -68,7 +68,7 @@ class NamedChunkIdsPlugin {
68
68
  hashFunction,
69
69
  compiler.root
70
70
  ),
71
- chunk =>
71
+ (chunk) =>
72
72
  getLongChunkName(
73
73
  chunk,
74
74
  chunkGraph,
@@ -40,7 +40,7 @@ class NamedModuleIdsPlugin {
40
40
  */
41
41
  apply(compiler) {
42
42
  const { root } = compiler;
43
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
43
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
44
44
  const hashFunction =
45
45
  /** @type {NonNullable<Output["hashFunction"]>} */
46
46
  (compilation.outputOptions.hashFunction);
@@ -53,7 +53,7 @@ class NamedModuleIdsPlugin {
53
53
  const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
54
54
  const unnamedModules = assignNames(
55
55
  modules,
56
- m => getShortModuleName(m, context, root),
56
+ (m) => getShortModuleName(m, context, root),
57
57
  (m, shortName) =>
58
58
  getLongModuleName(shortName, m, context, hashFunction, root),
59
59
  compareModulesByIdentifier,
@@ -21,8 +21,8 @@ class NaturalChunkIdsPlugin {
21
21
  * @returns {void}
22
22
  */
23
23
  apply(compiler) {
24
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
25
- compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
24
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
25
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
26
26
  const chunkGraph = compilation.chunkGraph;
27
27
  const compareNatural = compareChunksNatural(chunkGraph);
28
28
  /** @type {Chunk[]} */
@@ -25,7 +25,7 @@ class NaturalModuleIdsPlugin {
25
25
  * @returns {void}
26
26
  */
27
27
  apply(compiler) {
28
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
28
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
29
29
  compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
30
30
  const [usedIds, modulesInNaturalOrder] =
31
31
  getUsedModuleIdsAndModules(compilation);
@@ -41,8 +41,8 @@ class OccurrenceChunkIdsPlugin {
41
41
  */
42
42
  apply(compiler) {
43
43
  const prioritiseInitial = this.options.prioritiseInitial;
44
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
45
- compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
44
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
45
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, (chunks) => {
46
46
  const chunkGraph = compilation.chunkGraph;
47
47
 
48
48
  /** @type {Map<Chunk, number>} */
@@ -46,7 +46,7 @@ class OccurrenceModuleIdsPlugin {
46
46
  */
47
47
  apply(compiler) {
48
48
  const prioritiseInitial = this.options.prioritiseInitial;
49
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
49
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
50
50
  const moduleGraph = compilation.moduleGraph;
51
51
 
52
52
  compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
@@ -75,14 +75,14 @@ class OccurrenceModuleIdsPlugin {
75
75
  * @param {Module} module module
76
76
  * @returns {number} count of occurs
77
77
  */
78
- const countOccursInEntry = module => {
78
+ const countOccursInEntry = (module) => {
79
79
  let sum = 0;
80
80
  for (const [
81
81
  originModule,
82
82
  connections
83
83
  ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
84
84
  if (!originModule) continue;
85
- if (!connections.some(c => c.isTargetActive(undefined))) continue;
85
+ if (!connections.some((c) => c.isTargetActive(undefined))) continue;
86
86
  sum += initialChunkChunkMap.get(originModule) || 0;
87
87
  }
88
88
  return sum;
@@ -92,7 +92,7 @@ class OccurrenceModuleIdsPlugin {
92
92
  * @param {Module} module module
93
93
  * @returns {number} count of occurs
94
94
  */
95
- const countOccurs = module => {
95
+ const countOccurs = (module) => {
96
96
  let sum = 0;
97
97
  for (const [
98
98
  originModule,
@@ -46,7 +46,7 @@ class SyncModuleIdsPlugin {
46
46
  let data;
47
47
  let dataChanged = false;
48
48
  if (this._read) {
49
- compiler.hooks.readRecords.tapAsync(plugin, callback => {
49
+ compiler.hooks.readRecords.tapAsync(plugin, (callback) => {
50
50
  const fs =
51
51
  /** @type {IntermediateFileSystem} */
52
52
  (compiler.intermediateFileSystem);
@@ -68,7 +68,7 @@ class SyncModuleIdsPlugin {
68
68
  });
69
69
  }
70
70
  if (this._write) {
71
- compiler.hooks.emitRecords.tapAsync(plugin, callback => {
71
+ compiler.hooks.emitRecords.tapAsync(plugin, (callback) => {
72
72
  if (!data || !dataChanged) return callback();
73
73
  /** @type {{[key: string]: string | number}} */
74
74
  const json = {};
@@ -82,7 +82,7 @@ class SyncModuleIdsPlugin {
82
82
  fs.writeFile(this._path, JSON.stringify(json), callback);
83
83
  });
84
84
  }
85
- compiler.hooks.thisCompilation.tap(plugin, compilation => {
85
+ compiler.hooks.thisCompilation.tap(plugin, (compilation) => {
86
86
  const associatedObjectForCache = compiler.root;
87
87
  const context = this._context || compiler.context;
88
88
  if (this._read) {
@@ -114,7 +114,7 @@ class SyncModuleIdsPlugin {
114
114
  });
115
115
  }
116
116
  if (this._write) {
117
- compilation.hooks.recordModules.tap(plugin, modules => {
117
+ compilation.hooks.recordModules.tap(plugin, (modules) => {
118
118
  const { chunkGraph } = compilation;
119
119
  let oldData = data;
120
120
  if (!oldData) {