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
@@ -15,6 +15,7 @@ const makePathsRelative = require("./util/identifier").makePathsRelative;
15
15
 
16
16
  /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
17
17
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
18
+ /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
18
19
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsManifest} DllReferencePluginOptionsManifest */
19
20
  /** @typedef {import("./Compiler")} Compiler */
20
21
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
@@ -28,6 +29,8 @@ const validate = createSchemaValidation(
28
29
  }
29
30
  );
30
31
 
32
+ /** @typedef {{ path: string, data: DllReferencePluginOptionsManifest | undefined, error: Error | undefined }} CompilationDataItem */
33
+
31
34
  class DllReferencePlugin {
32
35
  /**
33
36
  * @param {DllReferencePluginOptions} options options object
@@ -35,7 +38,7 @@ class DllReferencePlugin {
35
38
  constructor(options) {
36
39
  validate(options);
37
40
  this.options = options;
38
- /** @type {WeakMap<object, {path: string, data: DllReferencePluginOptionsManifest?, error: Error?}>} */
41
+ /** @type {WeakMap<object, CompilationDataItem>} */
39
42
  this._compilationData = new WeakMap();
40
43
  }
41
44
 
@@ -64,6 +67,7 @@ class DllReferencePlugin {
64
67
  /** @type {InputFileSystem} */
65
68
  (compiler.inputFileSystem).readFile(manifest, (err, result) => {
66
69
  if (err) return callback(err);
70
+ /** @type {CompilationDataItem} */
67
71
  const data = {
68
72
  path: manifest,
69
73
  data: undefined,
@@ -75,15 +79,18 @@ class DllReferencePlugin {
75
79
  data.data = parseJson(
76
80
  /** @type {Buffer} */ (result).toString("utf-8")
77
81
  );
78
- } catch (e) {
82
+ } catch (parseErr) {
79
83
  // Store the error in the params so that it can
80
84
  // be added as a compilation error later on.
81
85
  const manifestPath = makePathsRelative(
82
- compiler.options.context,
86
+ /** @type {string} */ (compiler.options.context),
83
87
  manifest,
84
88
  compiler.root
85
89
  );
86
- data.error = new DllManifestError(manifestPath, e.message);
90
+ data.error = new DllManifestError(
91
+ manifestPath,
92
+ /** @type {Error} */ (parseErr).message
93
+ );
87
94
  }
88
95
  this._compilationData.set(params, data);
89
96
  return callback();
@@ -98,13 +105,15 @@ class DllReferencePlugin {
98
105
  compiler.hooks.compile.tap("DllReferencePlugin", params => {
99
106
  let name = this.options.name;
100
107
  let sourceType = this.options.sourceType;
101
- let content =
108
+ let resolvedContent =
102
109
  "content" in this.options ? this.options.content : undefined;
103
110
  if ("manifest" in this.options) {
104
- let manifestParameter = this.options.manifest;
111
+ const manifestParameter = this.options.manifest;
105
112
  let manifest;
106
113
  if (typeof manifestParameter === "string") {
107
- const data = this._compilationData.get(params);
114
+ const data =
115
+ /** @type {CompilationDataItem} */
116
+ (this._compilationData.get(params));
108
117
  // If there was an error parsing the manifest
109
118
  // file, exit now because the error will be added
110
119
  // as a compilation error in the "compilation" hook.
@@ -118,23 +127,27 @@ class DllReferencePlugin {
118
127
  if (manifest) {
119
128
  if (!name) name = manifest.name;
120
129
  if (!sourceType) sourceType = manifest.type;
121
- if (!content) content = manifest.content;
130
+ if (!resolvedContent) resolvedContent = manifest.content;
122
131
  }
123
132
  }
124
133
  /** @type {Externals} */
125
134
  const externals = {};
126
- const source = "dll-reference " + name;
127
- externals[source] = name;
135
+ const source = `dll-reference ${name}`;
136
+ externals[source] = /** @type {string} */ (name);
128
137
  const normalModuleFactory = params.normalModuleFactory;
129
138
  new ExternalModuleFactoryPlugin(sourceType || "var", externals).apply(
130
139
  normalModuleFactory
131
140
  );
132
141
  new DelegatedModuleFactoryPlugin({
133
- source: source,
142
+ source,
134
143
  type: this.options.type,
135
144
  scope: this.options.scope,
136
- context: this.options.context || compiler.options.context,
137
- content,
145
+ context:
146
+ /** @type {string} */
147
+ (this.options.context || compiler.options.context),
148
+ content:
149
+ /** @type {DllReferencePluginOptionsContent} */
150
+ (resolvedContent),
138
151
  extensions: this.options.extensions,
139
152
  associatedObjectForCache: compiler.root
140
153
  }).apply(normalModuleFactory);
@@ -144,9 +157,11 @@ class DllReferencePlugin {
144
157
  "DllReferencePlugin",
145
158
  (compilation, params) => {
146
159
  if ("manifest" in this.options) {
147
- let manifest = this.options.manifest;
160
+ const manifest = this.options.manifest;
148
161
  if (typeof manifest === "string") {
149
- const data = this._compilationData.get(params);
162
+ const data = /** @type {CompilationDataItem} */ (
163
+ this._compilationData.get(params)
164
+ );
150
165
  // If there was an error parsing the manifest file, add the
151
166
  // error as a compilation error to make the compilation fail.
152
167
  if (data.error) {
@@ -12,9 +12,7 @@ const EntryDependency = require("./dependencies/EntryDependency");
12
12
 
13
13
  class EntryPlugin {
14
14
  /**
15
- * An entry plugin which will handle
16
- * creation of the EntryDependency
17
- *
15
+ * An entry plugin which will handle creation of the EntryDependency
18
16
  * @param {string} context context path
19
17
  * @param {string} entry entry path
20
18
  * @param {EntryOptions | string=} options entry options (passing a string is deprecated)
@@ -12,15 +12,18 @@ const WebpackError = require("./WebpackError");
12
12
  /** @typedef {import("./DefinePlugin").CodeValue} CodeValue */
13
13
 
14
14
  class EnvironmentPlugin {
15
+ /**
16
+ * @param {(string | string[] | Record<string, string>)[]} keys keys
17
+ */
15
18
  constructor(...keys) {
16
19
  if (keys.length === 1 && Array.isArray(keys[0])) {
17
20
  this.keys = keys[0];
18
21
  this.defaultValues = {};
19
22
  } else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
20
23
  this.keys = Object.keys(keys[0]);
21
- this.defaultValues = keys[0];
24
+ this.defaultValues = /** @type {Record<string, string>} */ (keys[0]);
22
25
  } else {
23
- this.keys = keys;
26
+ this.keys = /** @type {string[]} */ (keys);
24
27
  this.defaultValues = {};
25
28
  }
26
29
  }
@@ -48,9 +48,9 @@ const cutOffMultilineMessage = (stack, message) => {
48
48
  /** @type {string[]} */
49
49
  const result = [];
50
50
 
51
- stackSplitByLines.forEach((line, idx) => {
51
+ for (const [idx, line] of stackSplitByLines.entries()) {
52
52
  if (!line.includes(messageSplitByLines[idx])) result.push(line);
53
- });
53
+ }
54
54
 
55
55
  return result.join("\n");
56
56
  };
@@ -64,10 +64,9 @@ const cutOffMessage = (stack, message) => {
64
64
  const nextLine = stack.indexOf("\n");
65
65
  if (nextLine === -1) {
66
66
  return stack === message ? "" : stack;
67
- } else {
68
- const firstLine = stack.slice(0, nextLine);
69
- return firstLine === message ? stack.slice(nextLine + 1) : stack;
70
67
  }
68
+ const firstLine = stack.slice(0, nextLine);
69
+ return firstLine === message ? stack.slice(nextLine + 1) : stack;
71
70
  };
72
71
 
73
72
  /**
@@ -92,10 +91,10 @@ const cleanUpWebpackOptions = (stack, message) => {
92
91
  return stack;
93
92
  };
94
93
 
95
- exports.cutOffByFlag = cutOffByFlag;
96
- exports.cutOffLoaderExecution = cutOffLoaderExecution;
97
- exports.cutOffWebpackOptions = cutOffWebpackOptions;
98
- exports.cutOffMultilineMessage = cutOffMultilineMessage;
99
- exports.cutOffMessage = cutOffMessage;
100
- exports.cleanUp = cleanUp;
101
- exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
94
+ module.exports.cutOffByFlag = cutOffByFlag;
95
+ module.exports.cutOffLoaderExecution = cutOffLoaderExecution;
96
+ module.exports.cutOffWebpackOptions = cutOffWebpackOptions;
97
+ module.exports.cutOffMultilineMessage = cutOffMultilineMessage;
98
+ module.exports.cutOffMessage = cutOffMessage;
99
+ module.exports.cleanUp = cleanUp;
100
+ module.exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
@@ -39,7 +39,7 @@ class EvalDevToolModulePlugin {
39
39
  /**
40
40
  * @param {EvalDevToolModulePluginOptions=} options options
41
41
  */
42
- constructor(options) {
42
+ constructor(options = {}) {
43
43
  this.namespace = options.namespace || "";
44
44
  this.sourceUrlComment = options.sourceUrlComment || "\n//# sourceURL=[url]";
45
45
  this.moduleFilenameTemplate =
@@ -77,17 +77,15 @@ class EvalDevToolModulePlugin {
77
77
  hashFunction: compilation.outputOptions.hashFunction
78
78
  }
79
79
  );
80
- const footer =
81
- "\n" +
82
- this.sourceUrlComment.replace(
83
- /\[url\]/g,
84
- encodeURI(str)
85
- .replace(/%2F/g, "/")
86
- .replace(/%20/g, "_")
87
- .replace(/%5E/g, "^")
88
- .replace(/%5C/g, "\\")
89
- .replace(/^\//, "")
90
- );
80
+ const footer = `\n${this.sourceUrlComment.replace(
81
+ /\[url\]/g,
82
+ encodeURI(str)
83
+ .replace(/%2F/g, "/")
84
+ .replace(/%20/g, "_")
85
+ .replace(/%5E/g, "^")
86
+ .replace(/%5C/g, "\\")
87
+ .replace(/^\//, "")
88
+ )}`;
91
89
  const result = new RawSource(
92
90
  `eval(${
93
91
  compilation.outputOptions.trustedTypes
@@ -17,6 +17,7 @@ const { makePathsAbsolute } = require("./util/identifier");
17
17
  /** @typedef {import("webpack-sources").Source} Source */
18
18
  /** @typedef {import("../declarations/WebpackOptions").DevTool} DevToolOptions */
19
19
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
20
+ /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
20
21
  /** @typedef {import("./Compiler")} Compiler */
21
22
  /** @typedef {import("./NormalModule").SourceMap} SourceMap */
22
23
 
@@ -137,8 +138,8 @@ class EvalSourceMapDevToolPlugin {
137
138
  const module = compilation.findModule(source);
138
139
  return module || source;
139
140
  });
140
- let moduleFilenames = modules.map(module => {
141
- return ModuleFilenameHelpers.createFilename(
141
+ let moduleFilenames = modules.map(module =>
142
+ ModuleFilenameHelpers.createFilename(
142
143
  module,
143
144
  {
144
145
  moduleFilenameTemplate: this.moduleFilenameTemplate,
@@ -149,8 +150,8 @@ class EvalSourceMapDevToolPlugin {
149
150
  chunkGraph,
150
151
  hashFunction: compilation.outputOptions.hashFunction
151
152
  }
152
- );
153
- });
153
+ )
154
+ );
154
155
  moduleFilenames = ModuleFilenameHelpers.replaceDuplicates(
155
156
  moduleFilenames,
156
157
  (filename, i, n) => {
@@ -163,18 +164,19 @@ class EvalSourceMapDevToolPlugin {
163
164
  sourceMap.sourcesContent = undefined;
164
165
  }
165
166
  sourceMap.sourceRoot = options.sourceRoot || "";
166
- const moduleId = chunkGraph.getModuleId(m);
167
+ const moduleId =
168
+ /** @type {ModuleId} */
169
+ (chunkGraph.getModuleId(m));
167
170
  sourceMap.file =
168
171
  typeof moduleId === "number" ? `${moduleId}.js` : moduleId;
169
172
 
170
- const footer =
171
- this.sourceMapComment.replace(
172
- /\[url\]/g,
173
- `data:application/json;charset=utf-8;base64,${Buffer.from(
174
- JSON.stringify(sourceMap),
175
- "utf8"
176
- ).toString("base64")}`
177
- ) + `\n//# sourceURL=webpack-internal:///${moduleId}\n`; // workaround for chrome bug
173
+ const footer = `${this.sourceMapComment.replace(
174
+ /\[url\]/g,
175
+ `data:application/json;charset=utf-8;base64,${Buffer.from(
176
+ JSON.stringify(sourceMap),
177
+ "utf8"
178
+ ).toString("base64")}`
179
+ )}\n//# sourceURL=webpack-internal:///${moduleId}\n`; // workaround for chrome bug
178
180
 
179
181
  return result(
180
182
  new RawSource(