webpack 5.93.0 → 5.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +33 -20
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +75 -68
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +6 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +41 -15
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +130 -69
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +21 -13
  94. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  95. package/lib/WatchIgnorePlugin.js +26 -9
  96. package/lib/Watching.js +10 -5
  97. package/lib/WebpackOptionsApply.js +84 -62
  98. package/lib/asset/AssetGenerator.js +107 -42
  99. package/lib/asset/AssetModulesPlugin.js +29 -23
  100. package/lib/asset/AssetSourceGenerator.js +2 -7
  101. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  102. package/lib/buildChunkGraph.js +93 -81
  103. package/lib/cache/IdleFileCachePlugin.js +4 -4
  104. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  105. package/lib/cache/PackFileCacheStrategy.js +51 -50
  106. package/lib/cache/ResolverCachePlugin.js +6 -6
  107. package/lib/cache/mergeEtags.js +16 -21
  108. package/lib/cli.js +148 -104
  109. package/lib/config/browserslistTargetHandler.js +16 -13
  110. package/lib/config/defaults.js +32 -28
  111. package/lib/config/normalization.js +335 -344
  112. package/lib/config/target.js +42 -52
  113. package/lib/container/ContainerEntryModule.js +2 -2
  114. package/lib/container/ContainerPlugin.js +1 -1
  115. package/lib/container/RemoteRuntimeModule.js +11 -8
  116. package/lib/container/options.js +18 -4
  117. package/lib/css/CssExportsGenerator.js +26 -24
  118. package/lib/css/CssGenerator.js +9 -4
  119. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  120. package/lib/css/CssModulesPlugin.js +127 -47
  121. package/lib/css/CssParser.js +20 -18
  122. package/lib/css/walkCssTokens.js +80 -95
  123. package/lib/debug/ProfilingPlugin.js +19 -20
  124. package/lib/dependencies/AMDDefineDependency.js +1 -1
  125. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  126. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  128. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  129. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  130. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  131. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  132. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  133. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  134. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  135. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  136. package/lib/dependencies/ConstDependency.js +1 -1
  137. package/lib/dependencies/ContextDependency.js +7 -2
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +35 -8
  140. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  141. package/lib/dependencies/CssExportDependency.js +7 -7
  142. package/lib/dependencies/CssImportDependency.js +0 -2
  143. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
  144. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  145. package/lib/dependencies/CssUrlDependency.js +4 -5
  146. package/lib/dependencies/DynamicExports.js +5 -5
  147. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  148. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  149. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  150. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  151. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  152. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  153. package/lib/dependencies/HarmonyExports.js +2 -2
  154. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  155. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  156. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
  157. package/lib/dependencies/ImportDependency.js +1 -1
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  159. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  160. package/lib/dependencies/ImportParserPlugin.js +39 -44
  161. package/lib/dependencies/JsonExportsDependency.js +22 -18
  162. package/lib/dependencies/LoaderPlugin.js +47 -36
  163. package/lib/dependencies/LocalModule.js +1 -1
  164. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  165. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  166. package/lib/dependencies/ProvidedDependency.js +1 -1
  167. package/lib/dependencies/PureExpressionDependency.js +6 -6
  168. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  169. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  170. package/lib/dependencies/SystemPlugin.js +1 -1
  171. package/lib/dependencies/URLDependency.js +3 -3
  172. package/lib/dependencies/URLPlugin.js +66 -12
  173. package/lib/dependencies/WorkerPlugin.js +25 -24
  174. package/lib/dependencies/processExportInfo.js +3 -1
  175. package/lib/electron/ElectronTargetPlugin.js +1 -0
  176. package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
  177. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  178. package/lib/formatLocation.js +1 -2
  179. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  180. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  181. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  182. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  183. package/lib/hmr/lazyCompilationBackend.js +64 -40
  184. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  185. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  186. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  187. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  188. package/lib/ids/IdHelpers.js +29 -39
  189. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  190. package/lib/index.js +1 -5
  191. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
  192. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  193. package/lib/javascript/ChunkHelpers.js +1 -1
  194. package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
  195. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  196. package/lib/javascript/JavascriptGenerator.js +23 -7
  197. package/lib/javascript/JavascriptModulesPlugin.js +133 -86
  198. package/lib/javascript/JavascriptParser.js +179 -200
  199. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  200. package/lib/javascript/StartupHelpers.js +41 -13
  201. package/lib/json/JsonGenerator.js +7 -13
  202. package/lib/json/JsonModulesPlugin.js +1 -4
  203. package/lib/json/JsonParser.js +5 -3
  204. package/lib/library/AmdLibraryPlugin.js +12 -16
  205. package/lib/library/AssignLibraryPlugin.js +8 -10
  206. package/lib/library/EnableLibraryPlugin.js +15 -14
  207. package/lib/library/JsonpLibraryPlugin.js +2 -1
  208. package/lib/library/ModernModuleLibraryPlugin.js +8 -6
  209. package/lib/library/ModuleLibraryPlugin.js +2 -1
  210. package/lib/library/SystemLibraryPlugin.js +2 -1
  211. package/lib/library/UmdLibraryPlugin.js +66 -92
  212. package/lib/logging/Logger.js +32 -4
  213. package/lib/logging/createConsoleLogger.js +12 -13
  214. package/lib/logging/runtime.js +7 -8
  215. package/lib/logging/truncateArgs.js +5 -8
  216. package/lib/node/NodeWatchFileSystem.js +3 -18
  217. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  218. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  219. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/nodeConsole.js +22 -22
  221. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  222. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  223. package/lib/optimize/ConcatenatedModule.js +81 -51
  224. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  225. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  226. package/lib/optimize/InnerGraph.js +17 -17
  227. package/lib/optimize/InnerGraphPlugin.js +8 -7
  228. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  229. package/lib/optimize/MangleExportsPlugin.js +1 -0
  230. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
  231. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  232. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  233. package/lib/optimize/RealContentHashPlugin.js +7 -10
  234. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  235. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  236. package/lib/optimize/SplitChunksPlugin.js +34 -30
  237. package/lib/performance/SizeLimitsPlugin.js +2 -2
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  240. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  241. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  242. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  243. package/lib/rules/RuleSetCompiler.js +41 -22
  244. package/lib/rules/UseEffectRulePlugin.js +36 -32
  245. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  246. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  247. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  248. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  249. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  250. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  251. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  252. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  253. package/lib/schemes/DataUriPlugin.js +1 -1
  254. package/lib/schemes/HttpUriPlugin.js +241 -126
  255. package/lib/serialization/BinaryMiddleware.js +44 -28
  256. package/lib/serialization/DateObjectSerializer.js +1 -0
  257. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  258. package/lib/serialization/FileMiddleware.js +154 -106
  259. package/lib/serialization/MapObjectSerializer.js +2 -1
  260. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  261. package/lib/serialization/ObjectMiddleware.js +52 -56
  262. package/lib/serialization/PlainObjectSerializer.js +32 -6
  263. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  264. package/lib/serialization/Serializer.js +4 -5
  265. package/lib/serialization/SerializerMiddleware.js +6 -6
  266. package/lib/serialization/SetObjectSerializer.js +2 -1
  267. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  268. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  269. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  270. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  271. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  272. package/lib/sharing/utils.js +15 -27
  273. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  274. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  275. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  276. package/lib/stats/StatsFactory.js +127 -56
  277. package/lib/stats/StatsPrinter.js +75 -44
  278. package/lib/util/ArrayHelpers.js +8 -4
  279. package/lib/util/ArrayQueue.js +1 -1
  280. package/lib/util/AsyncQueue.js +31 -12
  281. package/lib/util/IterableHelpers.js +3 -4
  282. package/lib/util/LazyBucketSortedSet.js +60 -44
  283. package/lib/util/LazySet.js +13 -0
  284. package/lib/util/MapHelpers.js +1 -3
  285. package/lib/util/ParallelismFactorCalculator.js +1 -1
  286. package/lib/util/Queue.js +1 -1
  287. package/lib/util/Semaphore.js +4 -7
  288. package/lib/util/SetHelpers.js +5 -5
  289. package/lib/util/SortableSet.js +4 -3
  290. package/lib/util/StackedCacheMap.js +4 -6
  291. package/lib/util/StackedMap.js +1 -3
  292. package/lib/util/StringXor.js +0 -5
  293. package/lib/util/TupleQueue.js +1 -1
  294. package/lib/util/TupleSet.js +15 -5
  295. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  296. package/lib/util/WeakTupleMap.js +19 -21
  297. package/lib/util/binarySearchBounds.js +5 -12
  298. package/lib/util/chainedImports.js +1 -1
  299. package/lib/util/cleverMerge.js +21 -19
  300. package/lib/util/comparators.js +57 -52
  301. package/lib/util/compileBooleanMatcher.js +3 -6
  302. package/lib/util/conventions.js +8 -11
  303. package/lib/util/createHash.js +9 -6
  304. package/lib/util/deprecation.js +22 -12
  305. package/lib/util/deterministicGrouping.js +19 -26
  306. package/lib/util/findGraphRoots.js +2 -2
  307. package/lib/util/fs.js +32 -32
  308. package/lib/util/hash/md4.js +2 -2
  309. package/lib/util/hash/wasm-hash.js +7 -7
  310. package/lib/util/hash/xxhash64.js +2 -2
  311. package/lib/util/identifier.js +81 -59
  312. package/lib/util/memoize.js +8 -10
  313. package/lib/util/mergeScope.js +6 -9
  314. package/lib/util/nonNumericOnlyHash.js +2 -2
  315. package/lib/util/numberHash.js +1 -6
  316. package/lib/util/objectToMap.js +0 -1
  317. package/lib/util/propertyAccess.js +2 -5
  318. package/lib/util/propertyName.js +1 -3
  319. package/lib/util/registerExternalSerializer.js +1 -1
  320. package/lib/util/runtime.js +109 -113
  321. package/lib/util/semver.js +29 -27
  322. package/lib/util/serialization.js +16 -1
  323. package/lib/util/smartGrouping.js +5 -5
  324. package/lib/util/source.js +1 -1
  325. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  326. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  327. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  328. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  329. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  330. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  331. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  333. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  334. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  335. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  336. package/package.json +18 -17
  337. package/schemas/WebpackOptions.check.js +1 -1
  338. package/schemas/WebpackOptions.json +5 -0
  339. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  340. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  341. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  343. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  344. package/types.d.ts +681 -355
@@ -15,7 +15,10 @@ const deprecationCache = new Map();
15
15
  * @property {true} _fakeHook it's a fake hook
16
16
  */
17
17
 
18
- /** @template T @typedef {T & FakeHookMarker} FakeHook<T> */
18
+ /**
19
+ * @template T
20
+ * @typedef {T & FakeHookMarker} FakeHook<T>
21
+ */
19
22
 
20
23
  /**
21
24
  * @param {string} message deprecation message
@@ -28,7 +31,7 @@ const createDeprecation = (message, code) => {
28
31
  const fn = util.deprecate(
29
32
  () => {},
30
33
  message,
31
- "DEP_WEBPACK_DEPRECATION_" + code
34
+ `DEP_WEBPACK_DEPRECATION_${code}`
32
35
  );
33
36
  deprecationCache.set(message, fn);
34
37
  return fn;
@@ -69,7 +72,7 @@ const DISABLED_METHODS = [
69
72
  * @param {string} name property name
70
73
  * @returns {void}
71
74
  */
72
- exports.arrayToSetDeprecation = (set, name) => {
75
+ module.exports.arrayToSetDeprecation = (set, name) => {
73
76
  for (const method of COPY_METHODS) {
74
77
  if (set[method]) continue;
75
78
  const d = createDeprecation(
@@ -84,7 +87,11 @@ exports.arrayToSetDeprecation = (set, name) => {
84
87
  set[method] = function () {
85
88
  d();
86
89
  const array = Array.from(this);
87
- return Array.prototype[method].apply(array, arguments);
90
+ return Array.prototype[/** @type {keyof COPY_METHODS} */ (method)].apply(
91
+ array,
92
+ // eslint-disable-next-line prefer-rest-params
93
+ arguments
94
+ );
88
95
  };
89
96
  }
90
97
  const dPush = createDeprecation(
@@ -106,6 +113,7 @@ exports.arrayToSetDeprecation = (set, name) => {
106
113
  */
107
114
  set.push = function () {
108
115
  dPush();
116
+ // eslint-disable-next-line prefer-rest-params
109
117
  for (const item of Array.from(arguments)) {
110
118
  this.add(item);
111
119
  }
@@ -128,13 +136,13 @@ exports.arrayToSetDeprecation = (set, name) => {
128
136
  * @this {Set<any>} a Set
129
137
  * @returns {any} the value at this location
130
138
  */
139
+ // eslint-disable-next-line func-style
131
140
  const fn = function () {
132
141
  dIndexer();
133
142
  let i = 0;
134
143
  for (const item of this) {
135
144
  if (i++ === index) return item;
136
145
  }
137
- return undefined;
138
146
  };
139
147
  return fn;
140
148
  };
@@ -171,14 +179,17 @@ exports.arrayToSetDeprecation = (set, name) => {
171
179
  set[Symbol.isConcatSpreadable] = true;
172
180
  };
173
181
 
174
- exports.createArrayToSetDeprecationSet = name => {
182
+ module.exports.createArrayToSetDeprecationSet = name => {
175
183
  let initialized = false;
176
184
  class SetDeprecatedArray extends Set {
177
185
  constructor(items) {
178
186
  super(items);
179
187
  if (!initialized) {
180
188
  initialized = true;
181
- exports.arrayToSetDeprecation(SetDeprecatedArray.prototype, name);
189
+ module.exports.arrayToSetDeprecation(
190
+ SetDeprecatedArray.prototype,
191
+ name
192
+ );
182
193
  }
183
194
  }
184
195
  }
@@ -186,14 +197,13 @@ exports.createArrayToSetDeprecationSet = name => {
186
197
  };
187
198
 
188
199
  /**
189
- * @template T
190
200
  * @param {object} obj object
191
201
  * @param {string} name property name
192
202
  * @param {string} code deprecation code
193
203
  * @param {string} note additional note
194
- * @returns {object} frozen object with deprecation when modifying
204
+ * @returns {Proxy<object>} frozen object with deprecation when modifying
195
205
  */
196
- exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
206
+ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
197
207
  const message = `${name} will be frozen in future, all modifications are deprecated.${
198
208
  note && `\n${note}`
199
209
  }`;
@@ -260,7 +270,7 @@ const deprecateAllProperties = (obj, message, code) => {
260
270
  }
261
271
  return /** @type {T} */ (newObj);
262
272
  };
263
- exports.deprecateAllProperties = deprecateAllProperties;
273
+ module.exports.deprecateAllProperties = deprecateAllProperties;
264
274
 
265
275
  /**
266
276
  * @template T
@@ -269,7 +279,7 @@ exports.deprecateAllProperties = deprecateAllProperties;
269
279
  * @param {string=} code deprecation code (not deprecated when unset)
270
280
  * @returns {FakeHook<T>} fake hook which redirects
271
281
  */
272
- exports.createFakeHook = (fakeHook, message, code) => {
282
+ module.exports.createFakeHook = (fakeHook, message, code) => {
273
283
  if (message && code) {
274
284
  fakeHook = deprecateAllProperties(fakeHook, message, code);
275
285
  }
@@ -25,7 +25,6 @@
25
25
  // 3.2% that 5 or more groups are invalidated
26
26
 
27
27
  /**
28
- *
29
28
  * @param {string} a key
30
29
  * @param {string} b key
31
30
  * @returns {number} the similarity as number
@@ -116,9 +115,7 @@ const isTooBig = (size, maxSize) => {
116
115
  const s = size[key];
117
116
  if (s === 0) continue;
118
117
  const maxSizeValue = maxSize[key];
119
- if (typeof maxSizeValue === "number") {
120
- if (s > maxSizeValue) return true;
121
- }
118
+ if (typeof maxSizeValue === "number" && s > maxSizeValue) return true;
122
119
  }
123
120
  return false;
124
121
  };
@@ -133,9 +130,7 @@ const isTooSmall = (size, minSize) => {
133
130
  const s = size[key];
134
131
  if (s === 0) continue;
135
132
  const minSizeValue = minSize[key];
136
- if (typeof minSizeValue === "number") {
137
- if (s < minSizeValue) return true;
138
- }
133
+ if (typeof minSizeValue === "number" && s < minSizeValue) return true;
139
134
  }
140
135
  return false;
141
136
  };
@@ -151,9 +146,7 @@ const getTooSmallTypes = (size, minSize) => {
151
146
  const s = size[key];
152
147
  if (s === 0) continue;
153
148
  const minSizeValue = minSize[key];
154
- if (typeof minSizeValue === "number") {
155
- if (s < minSizeValue) types.add(key);
156
- }
149
+ if (typeof minSizeValue === "number" && s < minSizeValue) types.add(key);
157
150
  }
158
151
  return types;
159
152
  };
@@ -236,14 +229,14 @@ class Group {
236
229
  newSimilarities.push(
237
230
  lastNode === this.nodes[i - 1]
238
231
  ? /** @type {number[]} */ (this.similarities)[i - 1]
239
- : similarity(lastNode.key, node.key)
232
+ : similarity(/** @type {Node<T>} */ (lastNode).key, node.key)
240
233
  );
241
234
  }
242
235
  newNodes.push(node);
243
236
  lastNode = node;
244
237
  }
245
238
  }
246
- if (resultNodes.length === this.nodes.length) return undefined;
239
+ if (resultNodes.length === this.nodes.length) return;
247
240
  this.nodes = newNodes;
248
241
  this.similarities = newSimilarities;
249
242
  this.size = sumSize(newNodes);
@@ -260,7 +253,7 @@ const getSimilarities = nodes => {
260
253
  // calculate similarities between lexically adjacent nodes
261
254
  /** @type {number[]} */
262
255
  const similarities = [];
263
- let last = undefined;
256
+ let last;
264
257
  for (const node of nodes) {
265
258
  if (last !== undefined) {
266
259
  similarities.push(similarity(last.key, node.key));
@@ -371,9 +364,8 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
371
364
  result.push(new Group(problemNodes, null));
372
365
  }
373
366
  return true;
374
- } else {
375
- return false;
376
367
  }
368
+ return false;
377
369
  };
378
370
 
379
371
  if (initialGroup.nodes.length > 0) {
@@ -398,14 +390,14 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
398
390
  // going minSize from left and right
399
391
  // at least one node need to be included otherwise we get stuck
400
392
  let left = 1;
401
- let leftSize = Object.create(null);
393
+ const leftSize = Object.create(null);
402
394
  addSizeTo(leftSize, group.nodes[0].size);
403
395
  while (left < group.nodes.length && isTooSmall(leftSize, minSize)) {
404
396
  addSizeTo(leftSize, group.nodes[left].size);
405
397
  left++;
406
398
  }
407
399
  let right = group.nodes.length - 2;
408
- let rightSize = Object.create(null);
400
+ const rightSize = Object.create(null);
409
401
  addSizeTo(rightSize, group.nodes[group.nodes.length - 1].size);
410
402
  while (right >= 0 && isTooSmall(rightSize, minSize)) {
411
403
  addSizeTo(rightSize, group.nodes[right].size);
@@ -453,7 +445,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
453
445
  let best = -1;
454
446
  let bestSimilarity = Infinity;
455
447
  let pos = left;
456
- let rightSize = sumSize(group.nodes.slice(pos));
448
+ const rightSize = sumSize(group.nodes.slice(pos));
457
449
 
458
450
  // pos v v right
459
451
  // [ O O O ] O O O [ O O O ]
@@ -536,12 +528,13 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
536
528
  }
537
529
 
538
530
  // return the results
539
- return result.map(group => {
540
- /** @type {GroupedItems<T>} */
541
- return {
542
- key: group.key,
543
- items: group.nodes.map(node => node.item),
544
- size: group.size
545
- };
546
- });
531
+ return result.map(
532
+ group =>
533
+ /** @type {GroupedItems<T>} */
534
+ ({
535
+ key: group.key,
536
+ items: group.nodes.map(node => node.item),
537
+ size: group.size
538
+ })
539
+ );
547
540
  };
@@ -225,7 +225,7 @@ module.exports = (items, getDependencies) => {
225
225
  // When roots were found, return them
226
226
  if (roots.size > 0) {
227
227
  return Array.from(roots, r => r.item);
228
- } else {
229
- throw new Error("Implementation of findGraphRoots is broken");
230
228
  }
229
+
230
+ throw new Error("Implementation of findGraphRoots is broken");
231
231
  };
package/lib/util/fs.js CHANGED
@@ -80,23 +80,28 @@ const path = require("path");
80
80
  /** @typedef {function(NodeJS.ErrnoException | null, number=): void} NumberCallback */
81
81
  /** @typedef {function(NodeJS.ErrnoException | Error | null, JsonObject=): void} ReadJsonCallback */
82
82
 
83
+ /** @typedef {Map<string, FileSystemInfoEntry | "ignore">} TimeInfoEntries */
84
+
83
85
  /**
84
86
  * @typedef {object} WatcherInfo
85
87
  * @property {Set<string>} changes get current aggregated changes that have not yet send to callback
86
88
  * @property {Set<string>} removals get current aggregated removals that have not yet send to callback
87
- * @property {Map<string, FileSystemInfoEntry | "ignore">} fileTimeInfoEntries get info about files
88
- * @property {Map<string, FileSystemInfoEntry | "ignore">} contextTimeInfoEntries get info about directories
89
+ * @property {TimeInfoEntries} fileTimeInfoEntries get info about files
90
+ * @property {TimeInfoEntries} contextTimeInfoEntries get info about directories
89
91
  */
90
92
 
93
+ /** @typedef {Set<string>} Changes */
94
+ /** @typedef {Set<string>} Removals */
95
+
91
96
  // TODO webpack 6 deprecate missing getInfo
92
97
  /**
93
98
  * @typedef {object} Watcher
94
99
  * @property {function(): void} close closes the watcher and all underlying file watchers
95
100
  * @property {function(): void} pause closes the watcher, but keeps underlying file watchers alive until the next watch call
96
- * @property {function(): Set<string>=} getAggregatedChanges get current aggregated changes that have not yet send to callback
97
- * @property {function(): Set<string>=} getAggregatedRemovals get current aggregated removals that have not yet send to callback
98
- * @property {function(): Map<string, FileSystemInfoEntry | "ignore">} getFileTimeInfoEntries get info about files
99
- * @property {function(): Map<string, FileSystemInfoEntry | "ignore">} getContextTimeInfoEntries get info about directories
101
+ * @property {function(): Changes=} getAggregatedChanges get current aggregated changes that have not yet send to callback
102
+ * @property {function(): Removals=} getAggregatedRemovals get current aggregated removals that have not yet send to callback
103
+ * @property {function(): TimeInfoEntries} getFileTimeInfoEntries get info about files
104
+ * @property {function(): TimeInfoEntries} getContextTimeInfoEntries get info about directories
100
105
  * @property {function(): WatcherInfo=} getInfo get info about timestamps and changes
101
106
  */
102
107
 
@@ -107,7 +112,7 @@ const path = require("path");
107
112
  * @param {Iterable<string>} missing watched existence entries
108
113
  * @param {number} startTime timestamp of start time
109
114
  * @param {WatchOptions} options options object
110
- * @param {function(Error | null, Map<string, FileSystemInfoEntry | "ignore">, Map<string, FileSystemInfoEntry | "ignore">, Set<string>, Set<string>): void} callback aggregated callback
115
+ * @param {function(Error | null, TimeInfoEntries=, TimeInfoEntries=, Changes=, Removals=): void} callback aggregated callback
111
116
  * @param {function(string, number): void} callbackUndelayed callback when the first change was detected
112
117
  * @returns {Watcher} a watcher
113
118
  */
@@ -451,7 +456,6 @@ const path = require("path");
451
456
  /** @typedef {InputFileSystem & OutputFileSystem & IntermediateFileSystemExtras} IntermediateFileSystem */
452
457
 
453
458
  /**
454
- *
455
459
  * @param {InputFileSystem|OutputFileSystem|undefined} fs a file system
456
460
  * @param {string} rootPath the root path
457
461
  * @param {string} targetPath the target path
@@ -464,13 +468,12 @@ const relative = (fs, rootPath, targetPath) => {
464
468
  return path.posix.relative(rootPath, targetPath);
465
469
  } else if (path.win32.isAbsolute(rootPath)) {
466
470
  return path.win32.relative(rootPath, targetPath);
467
- } else {
468
- throw new Error(
469
- `${rootPath} is neither a posix nor a windows path, and there is no 'relative' method defined in the file system`
470
- );
471
471
  }
472
+ throw new Error(
473
+ `${rootPath} is neither a posix nor a windows path, and there is no 'relative' method defined in the file system`
474
+ );
472
475
  };
473
- exports.relative = relative;
476
+ module.exports.relative = relative;
474
477
 
475
478
  /**
476
479
  * @param {InputFileSystem|OutputFileSystem|undefined} fs a file system
@@ -485,13 +488,12 @@ const join = (fs, rootPath, filename) => {
485
488
  return path.posix.join(rootPath, filename);
486
489
  } else if (path.win32.isAbsolute(rootPath)) {
487
490
  return path.win32.join(rootPath, filename);
488
- } else {
489
- throw new Error(
490
- `${rootPath} is neither a posix nor a windows path, and there is no 'join' method defined in the file system`
491
- );
492
491
  }
492
+ throw new Error(
493
+ `${rootPath} is neither a posix nor a windows path, and there is no 'join' method defined in the file system`
494
+ );
493
495
  };
494
- exports.join = join;
496
+ module.exports.join = join;
495
497
 
496
498
  /**
497
499
  * @param {InputFileSystem|OutputFileSystem|undefined} fs a file system
@@ -505,13 +507,12 @@ const dirname = (fs, absPath) => {
505
507
  return path.posix.dirname(absPath);
506
508
  } else if (path.win32.isAbsolute(absPath)) {
507
509
  return path.win32.dirname(absPath);
508
- } else {
509
- throw new Error(
510
- `${absPath} is neither a posix nor a windows path, and there is no 'dirname' method defined in the file system`
511
- );
512
510
  }
511
+ throw new Error(
512
+ `${absPath} is neither a posix nor a windows path, and there is no 'dirname' method defined in the file system`
513
+ );
513
514
  };
514
- exports.dirname = dirname;
515
+ module.exports.dirname = dirname;
515
516
 
516
517
  /**
517
518
  * @param {OutputFileSystem} fs a file system
@@ -556,7 +557,7 @@ const mkdirp = (fs, p, callback) => {
556
557
  callback();
557
558
  });
558
559
  };
559
- exports.mkdirp = mkdirp;
560
+ module.exports.mkdirp = mkdirp;
560
561
 
561
562
  /**
562
563
  * @param {IntermediateFileSystem} fs a file system
@@ -583,7 +584,7 @@ const mkdirpSync = (fs, p) => {
583
584
  }
584
585
  }
585
586
  };
586
- exports.mkdirpSync = mkdirpSync;
587
+ module.exports.mkdirpSync = mkdirpSync;
587
588
 
588
589
  /**
589
590
  * @param {InputFileSystem} fs a file system
@@ -601,13 +602,13 @@ const readJson = (fs, p, callback) => {
601
602
  let data;
602
603
  try {
603
604
  data = JSON.parse(/** @type {Buffer} */ (buf).toString("utf-8"));
604
- } catch (e) {
605
- return callback(/** @type {Error} */ (e));
605
+ } catch (err1) {
606
+ return callback(/** @type {Error} */ (err1));
606
607
  }
607
608
  return callback(null, data);
608
609
  });
609
610
  };
610
- exports.readJson = readJson;
611
+ module.exports.readJson = readJson;
611
612
 
612
613
  /**
613
614
  * @param {InputFileSystem} fs a file system
@@ -624,7 +625,7 @@ const lstatReadlinkAbsolute = (fs, p, callback) => {
624
625
  // we retry 2 times to catch this case before throwing the error
625
626
  return doStat();
626
627
  }
627
- if (err || !target) return doStat();
628
+ if (err) return callback(err);
628
629
  const value = target.toString();
629
630
  callback(null, join(fs, dirname(fs, p), value));
630
631
  });
@@ -641,11 +642,10 @@ const lstatReadlinkAbsolute = (fs, p, callback) => {
641
642
  callback(null, stats);
642
643
  }
643
644
  );
644
- } else {
645
- return fs.stat(p, callback);
646
645
  }
646
+ return fs.stat(p, callback);
647
647
  };
648
648
  if ("lstat" in fs) return doStat();
649
649
  doReadLink();
650
650
  };
651
- exports.lstatReadlinkAbsolute = lstatReadlinkAbsolute;
651
+ module.exports.lstatReadlinkAbsolute = lstatReadlinkAbsolute;
@@ -7,7 +7,7 @@
7
7
 
8
8
  const create = require("./wasm-hash");
9
9
 
10
- //#region wasm code: md4 (../../../assembly/hash/md4.asm.ts) --initialMemory 1
10
+ // #region wasm code: md4 (../../../assembly/hash/md4.asm.ts) --initialMemory 1
11
11
  const md4 = new WebAssembly.Module(
12
12
  Buffer.from(
13
13
  // 2154 bytes
@@ -15,6 +15,6 @@ const md4 = new WebAssembly.Module(
15
15
  "base64"
16
16
  )
17
17
  );
18
- //#endregion
18
+ // #endregion
19
19
 
20
20
  module.exports = create.bind(null, md4, [], 64, 32);
@@ -149,14 +149,14 @@ const create = (wasmModule, instancesPool, chunkSize, digestSize) => {
149
149
  const old = instancesPool.pop();
150
150
  old.reset();
151
151
  return old;
152
- } else {
153
- return new WasmHash(
154
- new WebAssembly.Instance(wasmModule),
155
- instancesPool,
156
- chunkSize,
157
- digestSize
158
- );
159
152
  }
153
+
154
+ return new WasmHash(
155
+ new WebAssembly.Instance(wasmModule),
156
+ instancesPool,
157
+ chunkSize,
158
+ digestSize
159
+ );
160
160
  };
161
161
 
162
162
  module.exports = create;
@@ -7,7 +7,7 @@
7
7
 
8
8
  const create = require("./wasm-hash");
9
9
 
10
- //#region wasm code: xxhash64 (../../../assembly/hash/xxhash64.asm.ts) --initialMemory 1
10
+ // #region wasm code: xxhash64 (../../../assembly/hash/xxhash64.asm.ts) --initialMemory 1
11
11
  const xxhash64 = new WebAssembly.Module(
12
12
  Buffer.from(
13
13
  // 1160 bytes
@@ -15,6 +15,6 @@ const xxhash64 = new WebAssembly.Module(
15
15
  "base64"
16
16
  )
17
17
  );
18
- //#endregion
18
+ // #endregion
19
19
 
20
20
  module.exports = create.bind(null, xxhash64, [], 32, 16);