webpack 5.92.1 → 5.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +36 -21
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +76 -69
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +5 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +104 -64
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +132 -70
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +12 -10
  94. package/lib/UseStrictPlugin.js +8 -1
  95. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  96. package/lib/WatchIgnorePlugin.js +26 -9
  97. package/lib/Watching.js +10 -5
  98. package/lib/WebpackOptionsApply.js +89 -62
  99. package/lib/asset/AssetGenerator.js +107 -42
  100. package/lib/asset/AssetModulesPlugin.js +29 -23
  101. package/lib/asset/AssetSourceGenerator.js +2 -7
  102. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  103. package/lib/buildChunkGraph.js +14 -19
  104. package/lib/cache/IdleFileCachePlugin.js +4 -4
  105. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  106. package/lib/cache/PackFileCacheStrategy.js +51 -50
  107. package/lib/cache/ResolverCachePlugin.js +6 -6
  108. package/lib/cache/mergeEtags.js +16 -21
  109. package/lib/cli.js +148 -104
  110. package/lib/config/browserslistTargetHandler.js +16 -13
  111. package/lib/config/defaults.js +31 -28
  112. package/lib/config/normalization.js +335 -344
  113. package/lib/config/target.js +42 -52
  114. package/lib/container/ContainerEntryModule.js +2 -2
  115. package/lib/container/ContainerPlugin.js +1 -1
  116. package/lib/container/RemoteRuntimeModule.js +11 -8
  117. package/lib/container/options.js +18 -4
  118. package/lib/css/CssExportsGenerator.js +39 -40
  119. package/lib/css/CssGenerator.js +11 -14
  120. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  121. package/lib/css/CssModulesPlugin.js +127 -47
  122. package/lib/css/CssParser.js +20 -18
  123. package/lib/css/walkCssTokens.js +80 -95
  124. package/lib/debug/ProfilingPlugin.js +19 -20
  125. package/lib/dependencies/AMDDefineDependency.js +1 -1
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  127. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  128. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  129. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  130. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  131. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  132. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  133. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  134. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  135. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  136. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  137. package/lib/dependencies/ConstDependency.js +1 -1
  138. package/lib/dependencies/ContextDependency.js +1 -1
  139. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  140. package/lib/dependencies/ContextElementDependency.js +2 -2
  141. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  142. package/lib/dependencies/CssExportDependency.js +72 -9
  143. package/lib/dependencies/CssImportDependency.js +0 -2
  144. package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
  145. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  146. package/lib/dependencies/CssUrlDependency.js +4 -5
  147. package/lib/dependencies/DynamicExports.js +5 -5
  148. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  149. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  150. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  151. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  152. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  153. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  154. package/lib/dependencies/HarmonyExports.js +2 -2
  155. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  156. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  157. package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
  158. package/lib/dependencies/ImportDependency.js +1 -1
  159. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  160. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  161. package/lib/dependencies/ImportParserPlugin.js +39 -44
  162. package/lib/dependencies/JsonExportsDependency.js +22 -18
  163. package/lib/dependencies/LoaderPlugin.js +47 -36
  164. package/lib/dependencies/LocalModule.js +1 -1
  165. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  166. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  167. package/lib/dependencies/ProvidedDependency.js +1 -1
  168. package/lib/dependencies/PureExpressionDependency.js +6 -6
  169. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  170. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  171. package/lib/dependencies/SystemPlugin.js +1 -1
  172. package/lib/dependencies/URLDependency.js +3 -3
  173. package/lib/dependencies/URLPlugin.js +66 -12
  174. package/lib/dependencies/WorkerPlugin.js +25 -24
  175. package/lib/dependencies/processExportInfo.js +3 -1
  176. package/lib/electron/ElectronTargetPlugin.js +1 -0
  177. package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
  178. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  179. package/lib/formatLocation.js +1 -2
  180. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  181. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  182. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  183. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  184. package/lib/hmr/lazyCompilationBackend.js +64 -40
  185. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  186. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  187. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  188. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  189. package/lib/ids/IdHelpers.js +29 -39
  190. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  191. package/lib/index.js +1 -5
  192. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
  193. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  194. package/lib/javascript/ChunkHelpers.js +1 -1
  195. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
  196. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  197. package/lib/javascript/JavascriptGenerator.js +23 -7
  198. package/lib/javascript/JavascriptModulesPlugin.js +97 -70
  199. package/lib/javascript/JavascriptParser.js +179 -200
  200. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  201. package/lib/javascript/StartupHelpers.js +41 -13
  202. package/lib/json/JsonGenerator.js +7 -13
  203. package/lib/json/JsonModulesPlugin.js +1 -4
  204. package/lib/json/JsonParser.js +5 -3
  205. package/lib/library/AmdLibraryPlugin.js +12 -16
  206. package/lib/library/AssignLibraryPlugin.js +9 -11
  207. package/lib/library/EnableLibraryPlugin.js +25 -15
  208. package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
  209. package/lib/library/JsonpLibraryPlugin.js +2 -1
  210. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  211. package/lib/library/ModuleLibraryPlugin.js +2 -1
  212. package/lib/library/SystemLibraryPlugin.js +2 -1
  213. package/lib/library/UmdLibraryPlugin.js +66 -92
  214. package/lib/logging/Logger.js +32 -4
  215. package/lib/logging/createConsoleLogger.js +12 -13
  216. package/lib/logging/runtime.js +7 -8
  217. package/lib/logging/truncateArgs.js +5 -8
  218. package/lib/node/NodeWatchFileSystem.js +3 -18
  219. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  221. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  222. package/lib/node/nodeConsole.js +22 -22
  223. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  224. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  225. package/lib/optimize/ConcatenatedModule.js +144 -61
  226. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  227. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  228. package/lib/optimize/InnerGraph.js +17 -17
  229. package/lib/optimize/InnerGraphPlugin.js +8 -7
  230. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  231. package/lib/optimize/MangleExportsPlugin.js +1 -0
  232. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  233. package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
  234. package/lib/optimize/RealContentHashPlugin.js +7 -10
  235. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  236. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  237. package/lib/optimize/SplitChunksPlugin.js +34 -30
  238. package/lib/performance/SizeLimitsPlugin.js +2 -2
  239. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
  240. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  241. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  242. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  243. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  244. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  245. package/lib/rules/RuleSetCompiler.js +41 -22
  246. package/lib/rules/UseEffectRulePlugin.js +36 -32
  247. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  248. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  249. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  250. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  251. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  253. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  254. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  255. package/lib/schemes/DataUriPlugin.js +1 -1
  256. package/lib/schemes/HttpUriPlugin.js +241 -126
  257. package/lib/serialization/BinaryMiddleware.js +44 -28
  258. package/lib/serialization/DateObjectSerializer.js +1 -0
  259. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  260. package/lib/serialization/FileMiddleware.js +154 -106
  261. package/lib/serialization/MapObjectSerializer.js +2 -1
  262. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  263. package/lib/serialization/ObjectMiddleware.js +52 -56
  264. package/lib/serialization/PlainObjectSerializer.js +32 -6
  265. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  266. package/lib/serialization/Serializer.js +4 -5
  267. package/lib/serialization/SerializerMiddleware.js +6 -6
  268. package/lib/serialization/SetObjectSerializer.js +2 -1
  269. package/lib/sharing/ConsumeSharedModule.js +19 -14
  270. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  271. package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
  272. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  273. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  274. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  275. package/lib/sharing/utils.js +15 -27
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  277. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  279. package/lib/stats/StatsFactory.js +127 -56
  280. package/lib/stats/StatsPrinter.js +75 -44
  281. package/lib/util/ArrayHelpers.js +8 -4
  282. package/lib/util/ArrayQueue.js +1 -1
  283. package/lib/util/AsyncQueue.js +31 -12
  284. package/lib/util/IterableHelpers.js +3 -4
  285. package/lib/util/LazyBucketSortedSet.js +60 -44
  286. package/lib/util/LazySet.js +1 -0
  287. package/lib/util/MapHelpers.js +1 -3
  288. package/lib/util/ParallelismFactorCalculator.js +1 -1
  289. package/lib/util/Queue.js +1 -1
  290. package/lib/util/Semaphore.js +4 -7
  291. package/lib/util/SetHelpers.js +5 -5
  292. package/lib/util/SortableSet.js +4 -3
  293. package/lib/util/StackedCacheMap.js +4 -6
  294. package/lib/util/StackedMap.js +1 -3
  295. package/lib/util/StringXor.js +0 -5
  296. package/lib/util/TupleQueue.js +1 -1
  297. package/lib/util/TupleSet.js +15 -5
  298. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  299. package/lib/util/WeakTupleMap.js +19 -21
  300. package/lib/util/binarySearchBounds.js +5 -12
  301. package/lib/util/chainedImports.js +1 -1
  302. package/lib/util/cleverMerge.js +21 -19
  303. package/lib/util/comparators.js +57 -52
  304. package/lib/util/compileBooleanMatcher.js +3 -6
  305. package/lib/util/conventions.js +10 -13
  306. package/lib/util/createHash.js +9 -6
  307. package/lib/util/deprecation.js +22 -12
  308. package/lib/util/deterministicGrouping.js +19 -26
  309. package/lib/util/findGraphRoots.js +2 -2
  310. package/lib/util/fs.js +31 -31
  311. package/lib/util/hash/md4.js +2 -2
  312. package/lib/util/hash/wasm-hash.js +7 -7
  313. package/lib/util/hash/xxhash64.js +2 -2
  314. package/lib/util/identifier.js +81 -59
  315. package/lib/util/memoize.js +8 -10
  316. package/lib/util/mergeScope.js +6 -9
  317. package/lib/util/nonNumericOnlyHash.js +2 -2
  318. package/lib/util/numberHash.js +1 -6
  319. package/lib/util/objectToMap.js +0 -1
  320. package/lib/util/propertyAccess.js +2 -5
  321. package/lib/util/propertyName.js +1 -3
  322. package/lib/util/registerExternalSerializer.js +1 -1
  323. package/lib/util/runtime.js +103 -113
  324. package/lib/util/semver.js +29 -27
  325. package/lib/util/serialization.js +16 -1
  326. package/lib/util/smartGrouping.js +5 -5
  327. package/lib/util/source.js +1 -1
  328. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  329. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  330. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  331. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  332. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  333. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  334. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  336. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  337. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  338. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  339. package/package.json +17 -16
  340. package/schemas/WebpackOptions.check.js +1 -1
  341. package/schemas/WebpackOptions.json +17 -0
  342. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  343. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  344. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  345. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  346. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  347. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  348. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  349. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  350. package/types.d.ts +682 -347
@@ -30,7 +30,7 @@ class FlagAllModulesAsUsedPlugin {
30
30
  const moduleGraph = compilation.moduleGraph;
31
31
  compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, modules => {
32
32
  /** @type {RuntimeSpec} */
33
- let runtime = undefined;
33
+ let runtime;
34
34
  for (const [name, { options }] of compilation.entries) {
35
35
  runtime = mergeRuntimeOwned(
36
36
  runtime,
@@ -54,14 +54,15 @@ class FlagDependencyExportsPlugin {
54
54
  const exportsInfo = moduleGraph.getExportsInfo(module);
55
55
  // If the module doesn't have an exportsType, it's a module
56
56
  // without declared exports.
57
- if (!module.buildMeta || !module.buildMeta.exportsType) {
58
- if (exportsInfo.otherExportsInfo.provided !== null) {
59
- // It's a module without declared exports
60
- statNoExports++;
61
- exportsInfo.setHasProvideInfo();
62
- exportsInfo.setUnknownExportsProvided();
63
- return callback();
64
- }
57
+ if (
58
+ (!module.buildMeta || !module.buildMeta.exportsType) &&
59
+ exportsInfo.otherExportsInfo.provided !== null
60
+ ) {
61
+ // It's a module without declared exports
62
+ statNoExports++;
63
+ exportsInfo.setHasProvideInfo();
64
+ exportsInfo.setUnknownExportsProvided();
65
+ return callback();
65
66
  }
66
67
  // If the module has no hash, it's uncacheable
67
68
  if (
@@ -189,9 +190,9 @@ class FlagDependencyExportsPlugin {
189
190
  let name;
190
191
  let canMangle = globalCanMangle;
191
192
  let terminalBinding = globalTerminalBinding;
192
- let exports = undefined;
193
+ let exports;
193
194
  let from = globalFrom;
194
- let fromExport = undefined;
195
+ let fromExport;
195
196
  let priority = globalPriority;
196
197
  let hidden = false;
197
198
  if (typeof exportNameOrSpec === "string") {
@@ -261,7 +262,7 @@ class FlagDependencyExportsPlugin {
261
262
 
262
263
  // Recalculate target exportsInfo
263
264
  const target = exportInfo.getTarget(moduleGraph);
264
- let targetExportsInfo = undefined;
265
+ let targetExportsInfo;
265
266
  if (target) {
266
267
  const targetModuleExportsInfo =
267
268
  moduleGraph.getExportsInfo(target.module);
@@ -308,7 +308,7 @@ class FlagDependencyUsagePlugin {
308
308
  }
309
309
  };
310
310
  /** @type {RuntimeSpec} */
311
- let globalRuntime = undefined;
311
+ let globalRuntime;
312
312
  for (const [
313
313
  entryName,
314
314
  { dependencies: deps, includeDependencies: includeDeps, options }
package/lib/Generator.js CHANGED
@@ -42,9 +42,6 @@
42
42
  * @property {RuntimeTemplate=} runtimeTemplate
43
43
  */
44
44
 
45
- /**
46
- *
47
- */
48
45
  class Generator {
49
46
  /**
50
47
  * @param {Record<string, Generator>} map map of types
@@ -133,8 +130,8 @@ class ByTypeGenerator extends Generator {
133
130
  * @param {string=} type source type
134
131
  * @returns {number} estimate size of the module
135
132
  */
136
- getSize(module, type) {
137
- const t = type || "javascript";
133
+ getSize(module, type = "javascript") {
134
+ const t = type;
138
135
  const generator = this.map[t];
139
136
  return generator ? generator.getSize(module, t) : 0;
140
137
  }
@@ -33,5 +33,6 @@ const connectChunkGroupParentAndChild = (parent, child) => {
33
33
  }
34
34
  };
35
35
 
36
- exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
37
- exports.connectChunkGroupParentAndChild = connectChunkGroupParentAndChild;
36
+ module.exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
37
+ module.exports.connectChunkGroupParentAndChild =
38
+ connectChunkGroupParentAndChild;
@@ -55,18 +55,16 @@ module.exports.makeWebpackError = makeWebpackError;
55
55
  * @param {string} hook name of hook
56
56
  * @returns {Callback<T>} generic callback
57
57
  */
58
- const makeWebpackErrorCallback = (callback, hook) => {
59
- return (err, result) => {
60
- if (err) {
61
- if (err instanceof WebpackError) {
62
- callback(err);
63
- return;
64
- }
65
- callback(new HookWebpackError(err, hook));
58
+ const makeWebpackErrorCallback = (callback, hook) => (err, result) => {
59
+ if (err) {
60
+ if (err instanceof WebpackError) {
61
+ callback(err);
66
62
  return;
67
63
  }
68
- callback(null, result);
69
- };
64
+ callback(new HookWebpackError(err, hook));
65
+ return;
66
+ }
67
+ callback(null, result);
70
68
  };
71
69
 
72
70
  module.exports.makeWebpackErrorCallback = makeWebpackErrorCallback;
@@ -44,8 +44,10 @@ const {
44
44
 
45
45
  /** @typedef {import("estree").CallExpression} CallExpression */
46
46
  /** @typedef {import("estree").Expression} Expression */
47
+ /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
47
48
  /** @typedef {import("./Chunk")} Chunk */
48
49
  /** @typedef {import("./Chunk").ChunkId} ChunkId */
50
+ /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
49
51
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
50
52
  /** @typedef {import("./Compiler")} Compiler */
51
53
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
@@ -62,7 +64,8 @@ const {
62
64
  * @property {SyncBailHook<[TODO, string[]], void>} hotAcceptWithoutCallback
63
65
  */
64
66
 
65
- /** @typedef {Map<string, { updatedChunkIds: Set<ChunkId>, removedChunkIds: Set<ChunkId>, removedModules: Set<Module>, filename: string, assetInfo: AssetInfo }>} HotUpdateMainContentByRuntime */
67
+ /** @typedef {{ updatedChunkIds: Set<ChunkId>, removedChunkIds: Set<ChunkId>, removedModules: Set<Module>, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
68
+ /** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
66
69
 
67
70
  /** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
68
71
  const parserHooksMap = new WeakMap();
@@ -131,7 +134,9 @@ class HotModuleReplacementPlugin {
131
134
  (module.buildInfo).moduleConcatenationBailout =
132
135
  "Hot Module Replacement";
133
136
  if (expr.arguments.length >= 1) {
134
- const arg = parser.evaluateExpression(expr.arguments[0]);
137
+ const arg = parser.evaluateExpression(
138
+ /** @type {Expression} */ (expr.arguments[0])
139
+ );
135
140
  /** @type {BasicEvaluatedExpression[]} */
136
141
  let params = [];
137
142
  if (arg.isString()) {
@@ -142,9 +147,9 @@ class HotModuleReplacementPlugin {
142
147
  (arg.items).filter(param => param.isString());
143
148
  }
144
149
  /** @type {string[]} */
145
- let requests = [];
150
+ const requests = [];
146
151
  if (params.length > 0) {
147
- params.forEach((param, idx) => {
152
+ for (const [idx, param] of params.entries()) {
148
153
  const request = /** @type {string} */ (param.string);
149
154
  const dep = new ParamDependency(
150
155
  request,
@@ -157,17 +162,16 @@ class HotModuleReplacementPlugin {
157
162
  dep.loc.index = idx;
158
163
  module.addDependency(dep);
159
164
  requests.push(request);
160
- });
165
+ }
161
166
  if (expr.arguments.length > 1) {
162
167
  hotAcceptCallback.call(expr.arguments[1], requests);
163
168
  for (let i = 1; i < expr.arguments.length; i++) {
164
169
  parser.walkExpression(expr.arguments[i]);
165
170
  }
166
171
  return true;
167
- } else {
168
- hotAcceptWithoutCallback.call(expr, requests);
169
- return true;
170
172
  }
173
+ hotAcceptWithoutCallback.call(expr, requests);
174
+ return true;
171
175
  }
172
176
  }
173
177
  parser.walkExpressions(expr.arguments);
@@ -202,7 +206,7 @@ class HotModuleReplacementPlugin {
202
206
  /** @type {BasicEvaluatedExpression[]} */
203
207
  (arg.items).filter(param => param.isString());
204
208
  }
205
- params.forEach((param, idx) => {
209
+ for (const [idx, param] of params.entries()) {
206
210
  const dep = new ParamDependency(
207
211
  /** @type {string} */ (param.string),
208
212
  /** @type {Range} */ (param.range)
@@ -211,7 +215,7 @@ class HotModuleReplacementPlugin {
211
215
  dep.loc = Object.create(/** @type {DependencyLocation} */ (expr.loc));
212
216
  dep.loc.index = idx;
213
217
  module.addDependency(dep);
214
- });
218
+ }
215
219
  }
216
220
  return true;
217
221
  };
@@ -244,14 +248,13 @@ class HotModuleReplacementPlugin {
244
248
  name: PLUGIN_NAME,
245
249
  before: "NodeStuffPlugin"
246
250
  },
247
- expr => {
248
- return evaluateToIdentifier(
251
+ expr =>
252
+ evaluateToIdentifier(
249
253
  "module.hot",
250
254
  "module",
251
255
  () => ["hot"],
252
256
  true
253
- )(expr);
254
- }
257
+ )(expr)
255
258
  );
256
259
  parser.hooks.call
257
260
  .for("module.hot.accept")
@@ -277,14 +280,14 @@ class HotModuleReplacementPlugin {
277
280
  const applyImportMetaHot = parser => {
278
281
  parser.hooks.evaluateIdentifier
279
282
  .for("import.meta.webpackHot")
280
- .tap(PLUGIN_NAME, expr => {
281
- return evaluateToIdentifier(
283
+ .tap(PLUGIN_NAME, expr =>
284
+ evaluateToIdentifier(
282
285
  "import.meta.webpackHot",
283
286
  "import.meta",
284
287
  () => ["webpackHot"],
285
288
  true
286
- )(expr);
287
- });
289
+ )(expr)
290
+ );
288
291
  parser.hooks.call
289
292
  .for("import.meta.webpackHot.accept")
290
293
  .tap(
@@ -309,7 +312,7 @@ class HotModuleReplacementPlugin {
309
312
  // It should not affect child compilations
310
313
  if (compilation.compiler !== compiler) return;
311
314
 
312
- //#region module.hot.* API
315
+ // #region module.hot.* API
313
316
  compilation.dependencyFactories.set(
314
317
  ModuleHotAcceptDependency,
315
318
  normalModuleFactory
@@ -326,9 +329,9 @@ class HotModuleReplacementPlugin {
326
329
  ModuleHotDeclineDependency,
327
330
  new ModuleHotDeclineDependency.Template()
328
331
  );
329
- //#endregion
332
+ // #endregion
330
333
 
331
- //#region import.meta.webpackHot.* API
334
+ // #region import.meta.webpackHot.* API
332
335
  compilation.dependencyFactories.set(
333
336
  ImportMetaHotAcceptDependency,
334
337
  normalModuleFactory
@@ -345,7 +348,7 @@ class HotModuleReplacementPlugin {
345
348
  ImportMetaHotDeclineDependency,
346
349
  new ImportMetaHotDeclineDependency.Template()
347
350
  );
348
- //#endregion
351
+ // #endregion
349
352
 
350
353
  let hotIndex = 0;
351
354
  /** @type {Record<string, string>} */
@@ -401,10 +404,9 @@ class HotModuleReplacementPlugin {
401
404
  module,
402
405
  chunk.runtime
403
406
  );
404
- } else {
405
- nonCodeGeneratedModules.add(module, chunk.runtime);
406
- return chunkGraph.getModuleHash(module, chunk.runtime);
407
407
  }
408
+ nonCodeGeneratedModules.add(module, chunk.runtime);
409
+ return chunkGraph.getModuleHash(module, chunk.runtime);
408
410
  };
409
411
  const fullHashModulesInThisChunk =
410
412
  chunkGraph.getChunkFullHashModulesSet(chunk);
@@ -446,28 +448,26 @@ class HotModuleReplacementPlugin {
446
448
  chunkModuleHashes[key] = hash;
447
449
  }
448
450
  }
449
- } else {
450
- if (fullHashModulesInThisChunk !== undefined) {
451
- for (const module of modules) {
452
- const key = `${chunk.id}|${module.identifier()}`;
453
- const hash = getModuleHash(module);
454
- if (
455
- fullHashModulesInThisChunk.has(
456
- /** @type {RuntimeModule} */ (module)
457
- )
458
- ) {
459
- fullHashChunkModuleHashes[key] = hash;
460
- } else {
461
- chunkModuleHashes[key] = hash;
462
- }
463
- }
464
- } else {
465
- for (const module of modules) {
466
- const key = `${chunk.id}|${module.identifier()}`;
467
- const hash = getModuleHash(module);
451
+ } else if (fullHashModulesInThisChunk !== undefined) {
452
+ for (const module of modules) {
453
+ const key = `${chunk.id}|${module.identifier()}`;
454
+ const hash = getModuleHash(module);
455
+ if (
456
+ fullHashModulesInThisChunk.has(
457
+ /** @type {RuntimeModule} */ (module)
458
+ )
459
+ ) {
460
+ fullHashChunkModuleHashes[key] = hash;
461
+ } else {
468
462
  chunkModuleHashes[key] = hash;
469
463
  }
470
464
  }
465
+ } else {
466
+ for (const module of modules) {
467
+ const key = `${chunk.id}|${module.identifier()}`;
468
+ const hash = getModuleHash(module);
469
+ chunkModuleHashes[key] = hash;
470
+ }
471
471
  }
472
472
  }
473
473
  }
@@ -517,7 +517,8 @@ class HotModuleReplacementPlugin {
517
517
  forEachRuntime(allOldRuntime, runtime => {
518
518
  const { path: filename, info: assetInfo } =
519
519
  compilation.getPathWithInfo(
520
- compilation.outputOptions.hotUpdateMainFilename,
520
+ /** @type {NonNullable<OutputNormalized["hotUpdateMainFilename"]>} */
521
+ (compilation.outputOptions.hotUpdateMainFilename),
521
522
  {
522
523
  hash: records.hash,
523
524
  runtime
@@ -540,7 +541,9 @@ class HotModuleReplacementPlugin {
540
541
  /** @type {Map<number|string, Module>} */
541
542
  const allModules = new Map();
542
543
  for (const module of compilation.modules) {
543
- const id = chunkGraph.getModuleId(module);
544
+ const id =
545
+ /** @type {ModuleId} */
546
+ (chunkGraph.getModuleId(module));
544
547
  allModules.set(id, module);
545
548
  }
546
549
 
@@ -604,16 +607,20 @@ class HotModuleReplacementPlugin {
604
607
  removedFromRuntime = subtractRuntime(oldRuntime, newRuntime);
605
608
  } else {
606
609
  // chunk has completely removed
607
- chunkId = `${+key}` === key ? +key : key;
610
+ chunkId = `${Number(key)}` === key ? Number(key) : key;
608
611
  removedFromRuntime = oldRuntime;
609
612
  newRuntime = oldRuntime;
610
613
  }
611
614
  if (removedFromRuntime) {
612
615
  // chunk was removed from some runtimes
613
616
  forEachRuntime(removedFromRuntime, runtime => {
614
- const item = hotUpdateMainContentByRuntime.get(
615
- /** @type {string} */ (runtime)
616
- );
617
+ const item =
618
+ /** @type {HotUpdateMainContentByRuntimeItem} */
619
+ (
620
+ hotUpdateMainContentByRuntime.get(
621
+ /** @type {string} */ (runtime)
622
+ )
623
+ );
617
624
  item.removedChunkIds.add(/** @type {ChunkId} */ (chunkId));
618
625
  });
619
626
  // dispose modules from the chunk in these runtimes
@@ -654,16 +661,18 @@ class HotModuleReplacementPlugin {
654
661
  for (const moduleRuntime of runtimes) {
655
662
  if (typeof moduleRuntime === "string") {
656
663
  if (moduleRuntime === runtime) return;
657
- } else if (moduleRuntime !== undefined) {
658
- if (
659
- moduleRuntime.has(/** @type {string} */ (runtime))
660
- )
661
- return;
662
- }
664
+ } else if (
665
+ moduleRuntime !== undefined &&
666
+ moduleRuntime.has(/** @type {string} */ (runtime))
667
+ )
668
+ return;
663
669
  }
664
- const item = hotUpdateMainContentByRuntime.get(
665
- /** @type {string} */ (runtime)
666
- );
670
+ const item =
671
+ /** @type {HotUpdateMainContentByRuntimeItem} */ (
672
+ hotUpdateMainContentByRuntime.get(
673
+ /** @type {string} */ (runtime)
674
+ )
675
+ );
667
676
  item.removedModules.add(module);
668
677
  });
669
678
  }
@@ -738,9 +747,12 @@ class HotModuleReplacementPlugin {
738
747
  }
739
748
  }
740
749
  forEachRuntime(newRuntime, runtime => {
741
- const item = hotUpdateMainContentByRuntime.get(
742
- /** @type {string} */ (runtime)
743
- );
750
+ const item =
751
+ /** @type {HotUpdateMainContentByRuntimeItem} */ (
752
+ hotUpdateMainContentByRuntime.get(
753
+ /** @type {string} */ (runtime)
754
+ )
755
+ );
744
756
  item.updatedChunkIds.add(/** @type {ChunkId} */ (chunkId));
745
757
  });
746
758
  }
@@ -795,8 +807,10 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
795
807
  removedModules.size === 0
796
808
  ? completelyRemovedModulesArray
797
809
  : completelyRemovedModulesArray.concat(
798
- Array.from(removedModules, m =>
799
- chunkGraph.getModuleId(m)
810
+ Array.from(
811
+ removedModules,
812
+ m =>
813
+ /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
800
814
  )
801
815
  )
802
816
  };
@@ -30,9 +30,9 @@ class IgnoreErrorModuleFactory extends ModuleFactory {
30
30
  * @returns {void}
31
31
  */
32
32
  create(data, callback) {
33
- this.normalModuleFactory.create(data, (err, result) => {
34
- return callback(null, result);
35
- });
33
+ this.normalModuleFactory.create(data, (err, result) =>
34
+ callback(null, result)
35
+ );
36
36
  }
37
37
  }
38
38
 
@@ -36,9 +36,7 @@ class IgnorePlugin {
36
36
  }
37
37
 
38
38
  /**
39
- * Note that if "contextRegExp" is given, both the "resourceRegExp"
40
- * and "contextRegExp" have to match.
41
- *
39
+ * Note that if "contextRegExp" is given, both the "resourceRegExp" and "contextRegExp" have to match.
42
40
  * @param {ResolveData} resolveData resolve data
43
41
  * @returns {false|undefined} returns false when the request should be ignored, otherwise undefined
44
42
  */
@@ -15,6 +15,7 @@ class IgnoreWarningsPlugin {
15
15
  constructor(ignoreWarnings) {
16
16
  this._ignoreWarnings = ignoreWarnings;
17
17
  }
18
+
18
19
  /**
19
20
  * Apply the plugin
20
21
  * @param {Compiler} compiler the compiler instance
@@ -22,15 +23,11 @@ class IgnoreWarningsPlugin {
22
23
  */
23
24
  apply(compiler) {
24
25
  compiler.hooks.compilation.tap("IgnoreWarningsPlugin", compilation => {
25
- compilation.hooks.processWarnings.tap(
26
- "IgnoreWarningsPlugin",
27
- warnings => {
28
- return warnings.filter(warning => {
29
- return !this._ignoreWarnings.some(ignore =>
30
- ignore(warning, compilation)
31
- );
32
- });
33
- }
26
+ compilation.hooks.processWarnings.tap("IgnoreWarningsPlugin", warnings =>
27
+ warnings.filter(
28
+ warning =>
29
+ !this._ignoreWarnings.some(ignore => ignore(warning, compilation))
30
+ )
34
31
  );
35
32
  });
36
33
  }
@@ -116,7 +116,7 @@ class InitFragment {
116
116
  continue;
117
117
  }
118
118
  }
119
- keyedFragments.set(fragment.key || Symbol(), fragment);
119
+ keyedFragments.set(fragment.key || Symbol("fragment key"), fragment);
120
120
  }
121
121
 
122
122
  const concatSource = new ConcatSource();
@@ -137,9 +137,8 @@ class InitFragment {
137
137
  concatSource.add(content);
138
138
  }
139
139
  return concatSource;
140
- } else {
141
- return source;
142
140
  }
141
+ return source;
143
142
  }
144
143
 
145
144
  /**
@@ -11,6 +11,7 @@ const { someInIterable } = require("./util/IterableHelpers");
11
11
  const { compareModulesById } = require("./util/comparators");
12
12
  const { dirname, mkdirp } = require("./util/fs");
13
13
 
14
+ /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
14
15
  /** @typedef {import("./Compiler")} Compiler */
15
16
  /** @typedef {import("./Compiler").IntermediateFileSystem} IntermediateFileSystem */
16
17
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
@@ -55,7 +56,7 @@ class LibManifestPlugin {
55
56
  const moduleGraph = compilation.moduleGraph;
56
57
  // store used paths to detect issue and output an error. #18200
57
58
  const usedPaths = new Set();
58
- asyncLib.forEach(
59
+ asyncLib.each(
59
60
  Array.from(compilation.chunks),
60
61
  (chunk, callback) => {
61
62
  if (!chunk.canBeInitial()) {
@@ -67,7 +68,7 @@ class LibManifestPlugin {
67
68
  chunk
68
69
  });
69
70
  if (usedPaths.has(targetPath)) {
70
- callback(new Error(`each chunk must have a unique path`));
71
+ callback(new Error("each chunk must have a unique path"));
71
72
  return;
72
73
  }
73
74
  usedPaths.add(targetPath);
@@ -102,7 +103,7 @@ class LibManifestPlugin {
102
103
  const providedExports = exportsInfo.getProvidedExports();
103
104
  /** @type {ManifestModuleData} */
104
105
  const data = {
105
- id: chunkGraph.getModuleId(module),
106
+ id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
106
107
  buildMeta: /** @type {BuildMeta} */ (module.buildMeta),
107
108
  exports: Array.isArray(providedExports)
108
109
  ? providedExports