webpack 5.99.6 → 5.99.8

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 (219) hide show
  1. package/lib/AutomaticPrefetchPlugin.js +21 -22
  2. package/lib/BannerPlugin.js +31 -35
  3. package/lib/CleanPlugin.js +5 -3
  4. package/lib/Compilation.js +21 -15
  5. package/lib/Compiler.js +2 -1
  6. package/lib/ContextExclusionPlugin.js +4 -2
  7. package/lib/ContextModule.js +1 -1
  8. package/lib/ContextModuleFactory.js +1 -2
  9. package/lib/ContextReplacementPlugin.js +7 -4
  10. package/lib/DefinePlugin.js +2 -2
  11. package/lib/DelegatedModule.js +18 -8
  12. package/lib/DelegatedModuleFactoryPlugin.js +9 -7
  13. package/lib/DelegatedPlugin.js +4 -2
  14. package/lib/DllEntryPlugin.js +4 -2
  15. package/lib/DllPlugin.js +5 -3
  16. package/lib/DllReferencePlugin.js +56 -60
  17. package/lib/DynamicEntryPlugin.js +4 -2
  18. package/lib/EntryOptionPlugin.js +3 -1
  19. package/lib/EntryPlugin.js +4 -2
  20. package/lib/EnvironmentPlugin.js +4 -2
  21. package/lib/EvalDevToolModulePlugin.js +9 -7
  22. package/lib/EvalSourceMapDevToolPlugin.js +138 -139
  23. package/lib/ExportsInfo.js +35 -16
  24. package/lib/ExternalModule.js +6 -5
  25. package/lib/ExternalsPlugin.js +3 -1
  26. package/lib/FileSystemInfo.js +2 -2
  27. package/lib/FlagDependencyExportsPlugin.js +2 -1
  28. package/lib/IgnorePlugin.js +6 -4
  29. package/lib/IgnoreWarningsPlugin.js +4 -2
  30. package/lib/LibManifestPlugin.js +5 -6
  31. package/lib/LoaderOptionsPlugin.js +4 -2
  32. package/lib/LoaderTargetPlugin.js +4 -2
  33. package/lib/Module.js +19 -12
  34. package/lib/ModuleFilenameHelpers.js +8 -4
  35. package/lib/ModuleInfoHeaderPlugin.js +11 -12
  36. package/lib/MultiCompiler.js +5 -3
  37. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  38. package/lib/NormalModule.js +13 -8
  39. package/lib/NormalModuleReplacementPlugin.js +33 -36
  40. package/lib/PlatformPlugin.js +3 -1
  41. package/lib/PrefetchPlugin.js +4 -2
  42. package/lib/ProgressPlugin.js +23 -26
  43. package/lib/RecordIdsPlugin.js +72 -102
  44. package/lib/RuntimePlugin.js +34 -32
  45. package/lib/SourceMapDevToolPlugin.js +9 -8
  46. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  47. package/lib/WarnNoModeSetPlugin.js +3 -1
  48. package/lib/WatchIgnorePlugin.js +3 -1
  49. package/lib/WebpackError.js +11 -3
  50. package/lib/WebpackOptionsApply.js +6 -7
  51. package/lib/asset/AssetGenerator.js +2 -2
  52. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  53. package/lib/cache/IdleFileCachePlugin.js +11 -12
  54. package/lib/cache/MemoryWithGcCachePlugin.js +7 -5
  55. package/lib/cache/ResolverCachePlugin.js +8 -6
  56. package/lib/cli.js +5 -1
  57. package/lib/config/defaults.js +10 -6
  58. package/lib/config/normalization.js +14 -8
  59. package/lib/container/ContainerReferencePlugin.js +24 -26
  60. package/lib/container/ModuleFederationPlugin.js +2 -1
  61. package/lib/css/CssGenerator.js +1 -1
  62. package/lib/css/CssModulesPlugin.js +8 -6
  63. package/lib/debug/ProfilingPlugin.js +18 -21
  64. package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -1
  65. package/lib/dependencies/ContextElementDependency.js +1 -1
  66. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -2
  67. package/lib/dependencies/HarmonyDetectionParserPlugin.js +9 -15
  68. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  69. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -2
  70. package/lib/dependencies/LoaderPlugin.js +5 -3
  71. package/lib/dependencies/RequireContextDependencyParserPlugin.js +46 -46
  72. package/lib/dependencies/RequireContextPlugin.js +2 -1
  73. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +94 -100
  74. package/lib/dependencies/WorkerPlugin.js +2 -2
  75. package/lib/esm/ModuleChunkLoadingPlugin.js +72 -73
  76. package/lib/hmr/HotModuleReplacement.runtime.js +0 -1
  77. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +0 -2
  78. package/lib/hmr/LazyCompilationPlugin.js +17 -18
  79. package/lib/ids/ChunkModuleIdRangePlugin.js +6 -6
  80. package/lib/ids/DeterministicModuleIdsPlugin.js +47 -48
  81. package/lib/ids/HashedModuleIdsPlugin.js +4 -2
  82. package/lib/ids/NamedChunkIdsPlugin.js +4 -2
  83. package/lib/ids/NamedModuleIdsPlugin.js +4 -2
  84. package/lib/ids/NaturalChunkIdsPlugin.js +4 -2
  85. package/lib/ids/NaturalModuleIdsPlugin.js +4 -2
  86. package/lib/ids/OccurrenceChunkIdsPlugin.js +4 -2
  87. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -2
  88. package/lib/index.js +11 -0
  89. package/lib/javascript/JavascriptModulesPlugin.js +2 -2
  90. package/lib/javascript/JavascriptParser.js +634 -656
  91. package/lib/json/JsonModulesPlugin.js +4 -4
  92. package/lib/library/AbstractLibraryPlugin.js +1 -1
  93. package/lib/library/ModuleLibraryPlugin.js +60 -42
  94. package/lib/node/CommonJsChunkLoadingPlugin.js +69 -73
  95. package/lib/node/NodeEnvironmentPlugin.js +3 -1
  96. package/lib/node/nodeConsole.js +3 -2
  97. package/lib/optimize/AggressiveSplittingPlugin.js +224 -232
  98. package/lib/optimize/ConcatenatedModule.js +15 -16
  99. package/lib/optimize/FlagIncludedChunksPlugin.js +92 -97
  100. package/lib/optimize/LimitChunkCountPlugin.js +4 -2
  101. package/lib/optimize/MangleExportsPlugin.js +15 -16
  102. package/lib/optimize/MinChunkSizePlugin.js +4 -2
  103. package/lib/optimize/ModuleConcatenationPlugin.js +6 -4
  104. package/lib/optimize/RealContentHashPlugin.js +4 -2
  105. package/lib/optimize/RemoveEmptyChunksPlugin.js +5 -3
  106. package/lib/optimize/RemoveParentModulesPlugin.js +4 -2
  107. package/lib/optimize/RuntimeChunkPlugin.js +21 -23
  108. package/lib/optimize/SideEffectsFlagPlugin.js +9 -6
  109. package/lib/optimize/SplitChunksPlugin.js +9 -7
  110. package/lib/performance/SizeLimitsPlugin.js +3 -1
  111. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -62
  112. package/lib/rules/BasicEffectRulePlugin.js +1 -2
  113. package/lib/rules/ObjectMatcherRulePlugin.js +2 -1
  114. package/lib/rules/RuleSetCompiler.js +19 -5
  115. package/lib/rules/UseEffectRulePlugin.js +4 -6
  116. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  117. package/lib/schemes/DataUriPlugin.js +5 -3
  118. package/lib/schemes/FileUriPlugin.js +5 -3
  119. package/lib/schemes/HttpUriPlugin.js +186 -188
  120. package/lib/serialization/AggregateErrorSerializer.js +42 -0
  121. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  122. package/lib/serialization/ObjectMiddleware.js +13 -0
  123. package/lib/sharing/ProvideSharedPlugin.js +6 -4
  124. package/lib/stats/DefaultStatsFactoryPlugin.js +89 -33
  125. package/lib/stats/DefaultStatsPresetPlugin.js +25 -20
  126. package/lib/stats/DefaultStatsPrinterPlugin.js +306 -341
  127. package/lib/util/concatenate.js +4 -2
  128. package/lib/util/createHash.js +3 -3
  129. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  130. package/lib/web/JsonpChunkLoadingPlugin.js +73 -74
  131. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +77 -78
  132. package/package.json +35 -30
  133. package/schemas/WebpackOptions.check.d.ts +1 -1
  134. package/schemas/WebpackOptions.check.js +2 -2
  135. package/schemas/WebpackOptions.json +267 -26
  136. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  137. package/schemas/plugins/BannerPlugin.check.js +1 -1
  138. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  139. package/schemas/plugins/DllPlugin.check.js +1 -1
  140. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  141. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  142. package/schemas/plugins/HashedModuleIdsPlugin.check.d.ts +1 -1
  143. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  144. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  145. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  146. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  147. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  148. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  149. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  150. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  151. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  152. package/schemas/plugins/SourceMapDevToolPlugin.json +2 -2
  153. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  154. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  155. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  156. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  157. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  158. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  159. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  160. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  161. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  162. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  163. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  164. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  165. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  166. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  167. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  168. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  169. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  170. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  171. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +1 -1
  172. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +1 -1
  173. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +1 -1
  174. package/schemas/plugins/css/CssAutoParserOptions.check.js +1 -1
  175. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  176. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  177. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +1 -1
  178. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +1 -1
  179. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +1 -1
  180. package/schemas/plugins/css/CssGlobalParserOptions.check.js +1 -1
  181. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  182. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -1
  183. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  184. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  185. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  186. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  187. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  188. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  189. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  190. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  191. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  192. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  193. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +7 -0
  194. package/schemas/plugins/{JsonModulesPluginGenerator.check.js → json/JsonModulesPluginGenerator.check.js} +1 -1
  195. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  196. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +7 -0
  197. package/schemas/plugins/{JsonModulesPluginParser.check.js → json/JsonModulesPluginParser.check.js} +1 -1
  198. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  199. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  200. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  201. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  202. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  203. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  204. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  205. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  206. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  207. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  208. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  209. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  210. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  211. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  212. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  213. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  214. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  215. package/types.d.ts +587 -207
  216. package/schemas/plugins/JsonModulesPluginGenerator.check.d.ts +0 -7
  217. package/schemas/plugins/JsonModulesPluginGenerator.json +0 -11
  218. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  219. package/schemas/plugins/JsonModulesPluginParser.json +0 -16
@@ -353,6 +353,8 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
353
353
  * @property {(RegExp | string | ((module: Module) => boolean))=} test additional filter for lazy compiled entrypoint modules
354
354
  */
355
355
 
356
+ const PLUGIN_NAME = "LazyCompilationPlugin";
357
+
356
358
  class LazyCompilationPlugin {
357
359
  /**
358
360
  * @param {Options} options options
@@ -372,28 +374,25 @@ class LazyCompilationPlugin {
372
374
  apply(compiler) {
373
375
  /** @type {BackendApi} */
374
376
  let backend;
375
- compiler.hooks.beforeCompile.tapAsync(
376
- "LazyCompilationPlugin",
377
- (params, callback) => {
378
- if (backend !== undefined) return callback();
379
- const promise = this.backend(compiler, (err, result) => {
380
- if (err) return callback(err);
381
- backend = /** @type {BackendApi} */ (result);
377
+ compiler.hooks.beforeCompile.tapAsync(PLUGIN_NAME, (params, callback) => {
378
+ if (backend !== undefined) return callback();
379
+ const promise = this.backend(compiler, (err, result) => {
380
+ if (err) return callback(err);
381
+ backend = /** @type {BackendApi} */ (result);
382
+ callback();
383
+ });
384
+ if (promise && promise.then) {
385
+ promise.then(b => {
386
+ backend = b;
382
387
  callback();
383
- });
384
- if (promise && promise.then) {
385
- promise.then(b => {
386
- backend = b;
387
- callback();
388
- }, callback);
389
- }
388
+ }, callback);
390
389
  }
391
- );
390
+ });
392
391
  compiler.hooks.thisCompilation.tap(
393
- "LazyCompilationPlugin",
392
+ PLUGIN_NAME,
394
393
  (compilation, { normalModuleFactory }) => {
395
394
  normalModuleFactory.hooks.module.tap(
396
- "LazyCompilationPlugin",
395
+ PLUGIN_NAME,
397
396
  (module, createData, resolveData) => {
398
397
  if (
399
398
  resolveData.dependencies.every(dep =>
@@ -454,7 +453,7 @@ class LazyCompilationPlugin {
454
453
  );
455
454
  }
456
455
  );
457
- compiler.hooks.shutdown.tapAsync("LazyCompilationPlugin", callback => {
456
+ compiler.hooks.shutdown.tapAsync(PLUGIN_NAME, callback => {
458
457
  backend.dispose(callback);
459
458
  });
460
459
  }
@@ -21,6 +21,8 @@ const {
21
21
  * @property {number=} end end id
22
22
  */
23
23
 
24
+ const PLUGIN_NAME = "ChunkModuleIdRangePlugin";
25
+
24
26
  class ChunkModuleIdRangePlugin {
25
27
  /**
26
28
  * @param {ChunkModuleIdRangePluginOptions} options options object
@@ -36,9 +38,9 @@ class ChunkModuleIdRangePlugin {
36
38
  */
37
39
  apply(compiler) {
38
40
  const options = this.options;
39
- compiler.hooks.compilation.tap("ChunkModuleIdRangePlugin", compilation => {
41
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
40
42
  const moduleGraph = compilation.moduleGraph;
41
- compilation.hooks.moduleIds.tap("ChunkModuleIdRangePlugin", modules => {
43
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, modules => {
42
44
  const chunkGraph = compilation.chunkGraph;
43
45
  const chunk = find(
44
46
  compilation.chunks,
@@ -46,7 +48,7 @@ class ChunkModuleIdRangePlugin {
46
48
  );
47
49
  if (!chunk) {
48
50
  throw new Error(
49
- `ChunkModuleIdRangePlugin: Chunk with name '${options.name}"' was not found`
51
+ `${PLUGIN_NAME}: Chunk with name '${options.name}"' was not found`
50
52
  );
51
53
  }
52
54
 
@@ -63,9 +65,7 @@ class ChunkModuleIdRangePlugin {
63
65
  cmpFn = compareModulesByPostOrderIndexOrIdentifier(moduleGraph);
64
66
  break;
65
67
  default:
66
- throw new Error(
67
- "ChunkModuleIdRangePlugin: unexpected value of order"
68
- );
68
+ throw new Error(`${PLUGIN_NAME}: unexpected value of order`);
69
69
  }
70
70
  chunkModules = chunkGraph.getOrderedChunkModules(chunk, cmpFn);
71
71
  } else {
@@ -27,6 +27,8 @@ const {
27
27
  * @property {boolean=} failOnConflict throw an error when id conflicts occur (instead of rehashing)
28
28
  */
29
29
 
30
+ const PLUGIN_NAME = "DeterministicModuleIdsPlugin";
31
+
30
32
  class DeterministicModuleIdsPlugin {
31
33
  /**
32
34
  * @param {DeterministicModuleIdsPluginOptions=} options options
@@ -41,56 +43,53 @@ class DeterministicModuleIdsPlugin {
41
43
  * @returns {void}
42
44
  */
43
45
  apply(compiler) {
44
- compiler.hooks.compilation.tap(
45
- "DeterministicModuleIdsPlugin",
46
- compilation => {
47
- compilation.hooks.moduleIds.tap("DeterministicModuleIdsPlugin", () => {
48
- const chunkGraph = compilation.chunkGraph;
49
- const context = this.options.context
50
- ? this.options.context
51
- : compiler.context;
52
- const maxLength = this.options.maxLength || 3;
53
- const failOnConflict = this.options.failOnConflict || false;
54
- const fixedLength = this.options.fixedLength || false;
55
- const salt = this.options.salt || 0;
56
- let conflicts = 0;
46
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
47
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
48
+ const chunkGraph = compilation.chunkGraph;
49
+ const context = this.options.context
50
+ ? this.options.context
51
+ : compiler.context;
52
+ const maxLength = this.options.maxLength || 3;
53
+ const failOnConflict = this.options.failOnConflict || false;
54
+ const fixedLength = this.options.fixedLength || false;
55
+ const salt = this.options.salt || 0;
56
+ let conflicts = 0;
57
57
 
58
- const [usedIds, modules] = getUsedModuleIdsAndModules(
59
- compilation,
60
- this.options.test
61
- );
62
- assignDeterministicIds(
63
- modules,
64
- module => getFullModuleName(module, context, compiler.root),
65
- failOnConflict
66
- ? () => 0
67
- : compareModulesByPreOrderIndexOrIdentifier(
68
- compilation.moduleGraph
69
- ),
70
- (module, id) => {
71
- const size = usedIds.size;
72
- usedIds.add(`${id}`);
73
- if (size === usedIds.size) {
74
- conflicts++;
75
- return false;
76
- }
77
- chunkGraph.setModuleId(module, id);
78
- return true;
79
- },
80
- [10 ** maxLength],
81
- fixedLength ? 0 : 10,
82
- usedIds.size,
83
- salt
58
+ const [usedIds, modules] = getUsedModuleIdsAndModules(
59
+ compilation,
60
+ this.options.test
61
+ );
62
+ assignDeterministicIds(
63
+ modules,
64
+ module => getFullModuleName(module, context, compiler.root),
65
+ failOnConflict
66
+ ? () => 0
67
+ : compareModulesByPreOrderIndexOrIdentifier(
68
+ compilation.moduleGraph
69
+ ),
70
+ (module, id) => {
71
+ const size = usedIds.size;
72
+ usedIds.add(`${id}`);
73
+ if (size === usedIds.size) {
74
+ conflicts++;
75
+ return false;
76
+ }
77
+ chunkGraph.setModuleId(module, id);
78
+ return true;
79
+ },
80
+ [10 ** maxLength],
81
+ fixedLength ? 0 : 10,
82
+ usedIds.size,
83
+ salt
84
+ );
85
+ if (failOnConflict && conflicts)
86
+ throw new Error(
87
+ `Assigning deterministic module ids has lead to ${conflicts} conflict${
88
+ conflicts > 1 ? "s" : ""
89
+ }.\nIncrease the 'maxLength' to increase the id space and make conflicts less likely (recommended when there are many conflicts or application is expected to grow), or add an 'salt' number to try another hash starting value in the same id space (recommended when there is only a single conflict).`
84
90
  );
85
- if (failOnConflict && conflicts)
86
- throw new Error(
87
- `Assigning deterministic module ids has lead to ${conflicts} conflict${
88
- conflicts > 1 ? "s" : ""
89
- }.\nIncrease the 'maxLength' to increase the id space and make conflicts less likely (recommended when there are many conflicts or application is expected to grow), or add an 'salt' number to try another hash starting value in the same id space (recommended when there is only a single conflict).`
90
- );
91
- });
92
- }
93
- );
91
+ });
92
+ });
94
93
  }
95
94
  }
96
95
 
@@ -28,6 +28,8 @@ const validate = createSchemaValidation(
28
28
  }
29
29
  );
30
30
 
31
+ const PLUGIN_NAME = "HashedModuleIdsPlugin";
32
+
31
33
  class HashedModuleIdsPlugin {
32
34
  /**
33
35
  * @param {HashedModuleIdsPluginOptions=} options options object
@@ -52,8 +54,8 @@ class HashedModuleIdsPlugin {
52
54
  */
53
55
  apply(compiler) {
54
56
  const options = this.options;
55
- compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
56
- compilation.hooks.moduleIds.tap("HashedModuleIdsPlugin", () => {
57
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
58
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
57
59
  const chunkGraph = compilation.chunkGraph;
58
60
  const context = this.options.context
59
61
  ? this.options.context
@@ -25,6 +25,8 @@ const {
25
25
  * @property {string=} delimiter delimiter
26
26
  */
27
27
 
28
+ const PLUGIN_NAME = "NamedChunkIdsPlugin";
29
+
28
30
  class NamedChunkIdsPlugin {
29
31
  /**
30
32
  * @param {NamedChunkIdsPluginOptions=} options options
@@ -40,11 +42,11 @@ class NamedChunkIdsPlugin {
40
42
  * @returns {void}
41
43
  */
42
44
  apply(compiler) {
43
- compiler.hooks.compilation.tap("NamedChunkIdsPlugin", compilation => {
45
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
44
46
  const hashFunction =
45
47
  /** @type {NonNullable<Output["hashFunction"]>} */
46
48
  (compilation.outputOptions.hashFunction);
47
- compilation.hooks.chunkIds.tap("NamedChunkIdsPlugin", chunks => {
49
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
48
50
  const chunkGraph = compilation.chunkGraph;
49
51
  const context = this.context ? this.context : compiler.context;
50
52
  const delimiter = this.delimiter;
@@ -23,6 +23,8 @@ const {
23
23
  * @property {string=} context context
24
24
  */
25
25
 
26
+ const PLUGIN_NAME = "NamedModuleIdsPlugin";
27
+
26
28
  class NamedModuleIdsPlugin {
27
29
  /**
28
30
  * @param {NamedModuleIdsPluginOptions=} options options
@@ -38,11 +40,11 @@ class NamedModuleIdsPlugin {
38
40
  */
39
41
  apply(compiler) {
40
42
  const { root } = compiler;
41
- compiler.hooks.compilation.tap("NamedModuleIdsPlugin", compilation => {
43
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
42
44
  const hashFunction =
43
45
  /** @type {NonNullable<Output["hashFunction"]>} */
44
46
  (compilation.outputOptions.hashFunction);
45
- compilation.hooks.moduleIds.tap("NamedModuleIdsPlugin", () => {
47
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
46
48
  const chunkGraph = compilation.chunkGraph;
47
49
  const context = this.options.context
48
50
  ? this.options.context
@@ -12,6 +12,8 @@ const { assignAscendingChunkIds } = require("./IdHelpers");
12
12
  /** @typedef {import("../Compiler")} Compiler */
13
13
  /** @typedef {import("../Module")} Module */
14
14
 
15
+ const PLUGIN_NAME = "NaturalChunkIdsPlugin";
16
+
15
17
  class NaturalChunkIdsPlugin {
16
18
  /**
17
19
  * Apply the plugin
@@ -19,8 +21,8 @@ class NaturalChunkIdsPlugin {
19
21
  * @returns {void}
20
22
  */
21
23
  apply(compiler) {
22
- compiler.hooks.compilation.tap("NaturalChunkIdsPlugin", compilation => {
23
- compilation.hooks.chunkIds.tap("NaturalChunkIdsPlugin", chunks => {
24
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
25
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
24
26
  const chunkGraph = compilation.chunkGraph;
25
27
  const compareNatural = compareChunksNatural(chunkGraph);
26
28
  const chunksInNaturalOrder = Array.from(chunks).sort(compareNatural);
@@ -16,6 +16,8 @@ const {
16
16
  /** @typedef {import("../Compiler")} Compiler */
17
17
  /** @typedef {import("../Module")} Module */
18
18
 
19
+ const PLUGIN_NAME = "NaturalModuleIdsPlugin";
20
+
19
21
  class NaturalModuleIdsPlugin {
20
22
  /**
21
23
  * Apply the plugin
@@ -23,8 +25,8 @@ class NaturalModuleIdsPlugin {
23
25
  * @returns {void}
24
26
  */
25
27
  apply(compiler) {
26
- compiler.hooks.compilation.tap("NaturalModuleIdsPlugin", compilation => {
27
- compilation.hooks.moduleIds.tap("NaturalModuleIdsPlugin", modules => {
28
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
29
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, modules => {
28
30
  const [usedIds, modulesInNaturalOrder] =
29
31
  getUsedModuleIdsAndModules(compilation);
30
32
  modulesInNaturalOrder.sort(
@@ -23,6 +23,8 @@ const validate = createSchemaValidation(
23
23
  }
24
24
  );
25
25
 
26
+ const PLUGIN_NAME = "OccurrenceChunkIdsPlugin";
27
+
26
28
  class OccurrenceChunkIdsPlugin {
27
29
  /**
28
30
  * @param {OccurrenceChunkIdsPluginOptions=} options options object
@@ -39,8 +41,8 @@ class OccurrenceChunkIdsPlugin {
39
41
  */
40
42
  apply(compiler) {
41
43
  const prioritiseInitial = this.options.prioritiseInitial;
42
- compiler.hooks.compilation.tap("OccurrenceChunkIdsPlugin", compilation => {
43
- compilation.hooks.chunkIds.tap("OccurrenceChunkIdsPlugin", chunks => {
44
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
45
+ compilation.hooks.chunkIds.tap(PLUGIN_NAME, chunks => {
44
46
  const chunkGraph = compilation.chunkGraph;
45
47
 
46
48
  /** @type {Map<Chunk, number>} */
@@ -28,6 +28,8 @@ const validate = createSchemaValidation(
28
28
  }
29
29
  );
30
30
 
31
+ const PLUGIN_NAME = "OccurrenceModuleIdsPlugin";
32
+
31
33
  class OccurrenceModuleIdsPlugin {
32
34
  /**
33
35
  * @param {OccurrenceModuleIdsPluginOptions=} options options object
@@ -44,10 +46,10 @@ class OccurrenceModuleIdsPlugin {
44
46
  */
45
47
  apply(compiler) {
46
48
  const prioritiseInitial = this.options.prioritiseInitial;
47
- compiler.hooks.compilation.tap("OccurrenceModuleIdsPlugin", compilation => {
49
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
48
50
  const moduleGraph = compilation.moduleGraph;
49
51
 
50
- compilation.hooks.moduleIds.tap("OccurrenceModuleIdsPlugin", () => {
52
+ compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
51
53
  const chunkGraph = compilation.chunkGraph;
52
54
 
53
55
  const [usedIds, modulesInOccurrenceOrder] =
package/lib/index.js CHANGED
@@ -11,20 +11,30 @@ const memoize = require("./util/memoize");
11
11
  /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
12
12
  /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
13
13
  /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
14
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItem} ExternalItem */
15
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunction} ExternalItemFunction */
16
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionCallback} ExternalItemFunctionCallback */
14
17
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
18
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionDataGetResolve} ExternalItemFunctionDataGetResolve */
19
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionDataGetResolveCallbackResult} ExternalItemFunctionDataGetResolveCallbackResult */
20
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionDataGetResolveResult} ExternalItemFunctionDataGetResolveResult */
21
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionPromise} ExternalItemFunctionPromise */
15
22
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
16
23
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
17
24
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
18
25
  /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
19
26
  /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
27
+ /** @typedef {import("../declarations/WebpackOptions").GeneratorOptionsByModuleTypeKnown} GeneratorOptionsByModuleTypeKnown */
20
28
  /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
21
29
  /** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
22
30
  /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
31
+ /** @typedef {import("../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
23
32
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
24
33
  /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
25
34
  /** @typedef {import("../declarations/WebpackOptions").RuleSetConditionAbsolute} RuleSetConditionAbsolute */
26
35
  /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
27
36
  /** @typedef {import("../declarations/WebpackOptions").RuleSetUse} RuleSetUse */
37
+ /** @typedef {import("../declarations/WebpackOptions").RuleSetUseFunction} RuleSetUseFunction */
28
38
  /** @typedef {import("../declarations/WebpackOptions").RuleSetUseItem} RuleSetUseItem */
29
39
  /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
30
40
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} Configuration */
@@ -37,6 +47,7 @@ const memoize = require("./util/memoize");
37
47
  /** @typedef {import("./Compilation").EntryOptions} EntryOptions */
38
48
  /** @typedef {import("./Compilation").PathData} PathData */
39
49
  /** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
50
+ /** @typedef {import("./Entrypoint")} Entrypoint */
40
51
  /** @typedef {import("./MultiCompiler").MultiCompilerOptions} MultiCompilerOptions */
41
52
  /** @typedef {import("./MultiStats")} MultiStats */
42
53
  /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
@@ -52,6 +52,7 @@ const JavascriptParser = require("./JavascriptParser");
52
52
  /** @typedef {import("eslint-scope").Variable} Variable */
53
53
  /** @typedef {import("estree").Program} Program */
54
54
  /** @typedef {import("webpack-sources").Source} Source */
55
+ /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
55
56
  /** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
56
57
  /** @typedef {import("../Chunk")} Chunk */
57
58
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
@@ -69,7 +70,6 @@ const JavascriptParser = require("./JavascriptParser");
69
70
  /** @typedef {import("../WebpackError")} WebpackError */
70
71
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
71
72
  /** @typedef {import("../util/Hash")} Hash */
72
- /** @typedef {import("../util/createHash").Algorithm} Algorithm */
73
73
 
74
74
  /**
75
75
  * @param {Chunk} chunk a chunk
@@ -429,7 +429,7 @@ class JavascriptModulesPlugin {
429
429
  hashFunction
430
430
  }
431
431
  } = compilation;
432
- const hash = createHash(/** @type {Algorithm} */ (hashFunction));
432
+ const hash = createHash(/** @type {HashFunction} */ (hashFunction));
433
433
  if (hashSalt) hash.update(hashSalt);
434
434
  if (chunk.hasRuntime()) {
435
435
  this.updateHashWithBootstrap(