webpack 5.101.3 → 5.102.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 (322) hide show
  1. package/README.md +21 -26
  2. package/lib/APIPlugin.js +30 -36
  3. package/lib/AsyncDependenciesBlock.js +1 -4
  4. package/lib/BannerPlugin.js +0 -1
  5. package/lib/Cache.js +7 -6
  6. package/lib/CacheFacade.js +0 -1
  7. package/lib/Chunk.js +49 -31
  8. package/lib/ChunkGraph.js +35 -25
  9. package/lib/ChunkGroup.js +8 -10
  10. package/lib/ChunkTemplate.js +1 -1
  11. package/lib/CleanPlugin.js +3 -3
  12. package/lib/CodeGenerationResults.js +2 -1
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +204 -185
  15. package/lib/Compiler.js +36 -35
  16. package/lib/ConcatenationScope.js +6 -1
  17. package/lib/ConditionalInitFragment.js +1 -1
  18. package/lib/ConstPlugin.js +6 -5
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +22 -20
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +4 -8
  24. package/lib/DelegatedModule.js +7 -11
  25. package/lib/DependenciesBlock.js +0 -2
  26. package/lib/Dependency.js +9 -11
  27. package/lib/DependencyTemplates.js +1 -3
  28. package/lib/DllModule.js +1 -7
  29. package/lib/DllReferencePlugin.js +2 -4
  30. package/lib/DynamicEntryPlugin.js +0 -2
  31. package/lib/EntryOptionPlugin.js +0 -5
  32. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  33. package/lib/EvalDevToolModulePlugin.js +4 -3
  34. package/lib/EvalSourceMapDevToolPlugin.js +3 -4
  35. package/lib/ExportsInfo.js +50 -49
  36. package/lib/ExternalModule.js +84 -52
  37. package/lib/ExternalModuleFactoryPlugin.js +27 -7
  38. package/lib/ExternalsPlugin.js +24 -17
  39. package/lib/FileSystemInfo.js +96 -78
  40. package/lib/FlagDependencyUsagePlugin.js +3 -4
  41. package/lib/Generator.js +2 -13
  42. package/lib/GraphHelpers.js +0 -3
  43. package/lib/HookWebpackError.js +0 -2
  44. package/lib/HotModuleReplacementPlugin.js +22 -24
  45. package/lib/HotUpdateChunk.js +0 -3
  46. package/lib/IgnorePlugin.js +5 -2
  47. package/lib/InitFragment.js +41 -29
  48. package/lib/InvalidDependenciesModuleWarning.js +0 -1
  49. package/lib/LibManifestPlugin.js +4 -6
  50. package/lib/LoaderOptionsPlugin.js +1 -10
  51. package/lib/MainTemplate.js +8 -19
  52. package/lib/Module.js +32 -20
  53. package/lib/ModuleFactory.js +1 -1
  54. package/lib/ModuleFilenameHelpers.js +41 -24
  55. package/lib/ModuleGraph.js +30 -16
  56. package/lib/ModuleInfoHeaderPlugin.js +0 -1
  57. package/lib/ModuleTemplate.js +0 -2
  58. package/lib/ModuleTypeConstants.js +11 -1
  59. package/lib/MultiCompiler.js +23 -15
  60. package/lib/MultiWatching.js +6 -10
  61. package/lib/NodeStuffPlugin.js +2 -10
  62. package/lib/NormalModule.js +145 -88
  63. package/lib/NormalModuleFactory.js +59 -40
  64. package/lib/OptionsApply.js +1 -1
  65. package/lib/Parser.js +1 -1
  66. package/lib/ProgressPlugin.js +6 -10
  67. package/lib/ProvidePlugin.js +5 -7
  68. package/lib/RawModule.js +1 -6
  69. package/lib/RecordIdsPlugin.js +10 -6
  70. package/lib/ResolverFactory.js +0 -2
  71. package/lib/RuntimeGlobals.js +5 -0
  72. package/lib/RuntimeModule.js +1 -3
  73. package/lib/RuntimePlugin.js +26 -22
  74. package/lib/RuntimeTemplate.js +12 -11
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +6 -11
  77. package/lib/Stats.js +0 -1
  78. package/lib/Template.js +6 -11
  79. package/lib/TemplatedPathPlugin.js +2 -1
  80. package/lib/WatchIgnorePlugin.js +2 -3
  81. package/lib/Watching.js +15 -15
  82. package/lib/WebpackIsIncludedPlugin.js +0 -2
  83. package/lib/WebpackOptionsApply.js +74 -107
  84. package/lib/asset/AssetBytesGenerator.js +166 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +20 -34
  87. package/lib/asset/AssetModulesPlugin.js +34 -16
  88. package/lib/asset/AssetParser.js +7 -3
  89. package/lib/asset/AssetSourceGenerator.js +1 -1
  90. package/lib/asset/RawDataUrlModule.js +3 -2
  91. package/lib/async-modules/AsyncModuleHelpers.js +6 -4
  92. package/lib/buildChunkGraph.js +0 -1
  93. package/lib/cache/MemoryCachePlugin.js +0 -2
  94. package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
  95. package/lib/cache/PackFileCacheStrategy.js +14 -1
  96. package/lib/cache/ResolverCachePlugin.js +9 -15
  97. package/lib/config/defaults.js +155 -21
  98. package/lib/config/normalization.js +18 -3
  99. package/lib/container/ContainerEntryDependency.js +0 -1
  100. package/lib/container/ContainerEntryModule.js +3 -7
  101. package/lib/container/ContainerPlugin.js +1 -2
  102. package/lib/container/ContainerReferencePlugin.js +0 -1
  103. package/lib/container/FallbackDependency.js +2 -1
  104. package/lib/container/FallbackModule.js +6 -7
  105. package/lib/container/ModuleFederationPlugin.js +0 -1
  106. package/lib/container/RemoteModule.js +8 -8
  107. package/lib/container/RemoteRuntimeModule.js +2 -2
  108. package/lib/css/CssGenerator.js +3 -6
  109. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  110. package/lib/css/CssModulesPlugin.js +11 -13
  111. package/lib/css/CssParser.js +3 -3
  112. package/lib/css/walkCssTokens.js +1 -1
  113. package/lib/debug/ProfilingPlugin.js +35 -8
  114. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  115. package/lib/dependencies/AMDPlugin.js +2 -2
  116. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  117. package/lib/dependencies/CachedConstDependency.js +0 -4
  118. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  119. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  120. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  121. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  122. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  123. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  124. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  125. package/lib/dependencies/ConstDependency.js +2 -2
  126. package/lib/dependencies/ContextDependency.js +9 -4
  127. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  128. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  129. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  130. package/lib/dependencies/ContextElementDependency.js +22 -11
  131. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  132. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  133. package/lib/dependencies/CssImportDependency.js +0 -8
  134. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -4
  135. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  136. package/lib/dependencies/CssUrlDependency.js +0 -6
  137. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  138. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  139. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  140. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  141. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  142. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  143. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  144. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  145. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  146. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  147. package/lib/dependencies/HarmonyImportDependency.js +30 -14
  148. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -23
  149. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  150. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  151. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  152. package/lib/dependencies/ImportDependency.js +18 -6
  153. package/lib/dependencies/ImportEagerDependency.js +2 -3
  154. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  155. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  156. package/lib/dependencies/ImportMetaPlugin.js +2 -1
  157. package/lib/dependencies/ImportParserPlugin.js +288 -45
  158. package/lib/dependencies/ImportWeakDependency.js +2 -3
  159. package/lib/dependencies/JsonExportsDependency.js +0 -1
  160. package/lib/dependencies/LoaderDependency.js +0 -3
  161. package/lib/dependencies/LoaderImportDependency.js +0 -3
  162. package/lib/dependencies/LoaderPlugin.js +11 -5
  163. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  164. package/lib/dependencies/ModuleDependency.js +3 -9
  165. package/lib/dependencies/NullDependency.js +2 -0
  166. package/lib/dependencies/ProvidedDependency.js +6 -8
  167. package/lib/dependencies/PureExpressionDependency.js +0 -1
  168. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  169. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  170. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  171. package/lib/dependencies/RequireResolveDependency.js +2 -2
  172. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  173. package/lib/dependencies/StaticExportsDependency.js +3 -5
  174. package/lib/dependencies/URLDependency.js +2 -7
  175. package/lib/dependencies/URLPlugin.js +1 -2
  176. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  177. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  178. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  179. package/lib/dependencies/WorkerDependency.js +2 -3
  180. package/lib/dependencies/WorkerPlugin.js +3 -9
  181. package/lib/dependencies/processExportInfo.js +2 -3
  182. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  183. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  184. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  185. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  186. package/lib/hmr/lazyCompilationBackend.js +13 -10
  187. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  188. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  189. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  190. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  191. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  192. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  193. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  194. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  195. package/lib/index.js +8 -7
  196. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  197. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  198. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  199. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  200. package/lib/javascript/JavascriptGenerator.js +2 -3
  201. package/lib/javascript/JavascriptModulesPlugin.js +44 -21
  202. package/lib/javascript/JavascriptParser.js +119 -54
  203. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  204. package/lib/javascript/StartupHelpers.js +2 -4
  205. package/lib/json/JsonData.js +1 -1
  206. package/lib/json/JsonGenerator.js +4 -5
  207. package/lib/json/JsonModulesPlugin.js +0 -3
  208. package/lib/json/JsonParser.js +4 -2
  209. package/lib/library/AbstractLibraryPlugin.js +2 -2
  210. package/lib/library/AmdLibraryPlugin.js +0 -1
  211. package/lib/library/AssignLibraryPlugin.js +23 -12
  212. package/lib/library/EnableLibraryPlugin.js +7 -11
  213. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  214. package/lib/library/JsonpLibraryPlugin.js +5 -2
  215. package/lib/library/ModuleLibraryPlugin.js +88 -43
  216. package/lib/library/SystemLibraryPlugin.js +0 -1
  217. package/lib/library/UmdLibraryPlugin.js +12 -18
  218. package/lib/logging/Logger.js +12 -10
  219. package/lib/logging/createConsoleLogger.js +15 -14
  220. package/lib/logging/truncateArgs.js +1 -1
  221. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  222. package/lib/node/NodeWatchFileSystem.js +4 -4
  223. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  224. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  225. package/lib/node/nodeConsole.js +2 -2
  226. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  227. package/lib/optimize/ConcatenatedModule.js +142 -100
  228. package/lib/optimize/InnerGraph.js +17 -11
  229. package/lib/optimize/InnerGraphPlugin.js +0 -3
  230. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  231. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  232. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  233. package/lib/optimize/SplitChunksPlugin.js +46 -40
  234. package/lib/performance/SizeLimitsPlugin.js +2 -1
  235. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  236. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  237. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  240. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  241. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  242. package/lib/rules/RuleSetCompiler.js +8 -6
  243. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  244. package/lib/runtime/CompatRuntimeModule.js +0 -1
  245. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  246. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  247. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  248. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  249. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  250. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  251. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  252. package/lib/schemes/DataUriPlugin.js +2 -28
  253. package/lib/schemes/FileUriPlugin.js +5 -2
  254. package/lib/schemes/HttpUriPlugin.js +4 -2
  255. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  256. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  257. package/lib/serialization/ObjectMiddleware.js +30 -19
  258. package/lib/serialization/SerializerMiddleware.js +1 -3
  259. package/lib/serialization/types.js +1 -1
  260. package/lib/sharing/ConsumeSharedModule.js +3 -5
  261. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  262. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  263. package/lib/sharing/ProvideSharedModule.js +3 -7
  264. package/lib/sharing/SharePlugin.js +0 -2
  265. package/lib/sharing/ShareRuntimeModule.js +4 -1
  266. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  267. package/lib/sharing/utils.js +0 -6
  268. package/lib/stats/DefaultStatsFactoryPlugin.js +178 -94
  269. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  270. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  271. package/lib/stats/StatsFactory.js +14 -11
  272. package/lib/url/URLParserPlugin.js +2 -4
  273. package/lib/util/ArrayHelpers.js +4 -4
  274. package/lib/util/AsyncQueue.js +1 -0
  275. package/lib/util/LazySet.js +2 -2
  276. package/lib/util/StackedCacheMap.js +0 -2
  277. package/lib/util/TupleSet.js +9 -4
  278. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  279. package/lib/util/WeakTupleMap.js +1 -1
  280. package/lib/util/chainedImports.js +3 -1
  281. package/lib/util/cleverMerge.js +15 -18
  282. package/lib/util/comparators.js +2 -4
  283. package/lib/util/compileBooleanMatcher.js +11 -9
  284. package/lib/util/concatenate.js +1 -2
  285. package/lib/util/create-schema-validation.js +0 -1
  286. package/lib/util/dataURL.js +39 -0
  287. package/lib/util/deprecation.js +29 -31
  288. package/lib/util/deterministicGrouping.js +34 -30
  289. package/lib/util/extractSourceMap.js +319 -0
  290. package/lib/util/findGraphRoots.js +15 -5
  291. package/lib/util/fs.js +29 -8
  292. package/lib/util/semver.js +9 -8
  293. package/lib/util/smartGrouping.js +41 -26
  294. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  295. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  296. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  297. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  298. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  299. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  300. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  301. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  302. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  303. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  304. package/lib/wasm-sync/WebAssemblyParser.js +1 -4
  305. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  306. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  307. package/lib/web/JsonpTemplatePlugin.js +0 -1
  308. package/lib/webpack.js +21 -8
  309. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  310. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  311. package/package.json +12 -12
  312. package/schemas/WebpackOptions.check.js +1 -1
  313. package/schemas/WebpackOptions.json +77 -93
  314. package/schemas/plugins/BannerPlugin.check.js +1 -1
  315. package/schemas/plugins/BannerPlugin.json +4 -0
  316. package/schemas/plugins/IgnorePlugin.json +1 -1
  317. package/schemas/plugins/ProgressPlugin.json +1 -1
  318. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  319. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  320. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  321. package/types.d.ts +1129 -530
  322. package/SECURITY.md +0 -9
@@ -14,9 +14,9 @@ const PLUGIN_NAME = "SourceMapDevToolModuleOptionsPlugin";
14
14
 
15
15
  class SourceMapDevToolModuleOptionsPlugin {
16
16
  /**
17
- * @param {SourceMapDevToolPluginOptions} options options
17
+ * @param {SourceMapDevToolPluginOptions=} options options
18
18
  */
19
- constructor(options) {
19
+ constructor(options = {}) {
20
20
  this.options = options;
21
21
  }
22
22
 
@@ -19,9 +19,7 @@ const { makePathsAbsolute } = require("./util/identifier");
19
19
 
20
20
  /** @typedef {import("webpack-sources").MapOptions} MapOptions */
21
21
  /** @typedef {import("webpack-sources").Source} Source */
22
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
23
22
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
24
- /** @typedef {import("./Cache").Etag} Etag */
25
23
  /** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */
26
24
  /** @typedef {import("./Chunk")} Chunk */
27
25
  /** @typedef {import("./Compilation").Asset} Asset */
@@ -109,7 +107,7 @@ const getTaskForFile = (
109
107
  source = asset.source();
110
108
  }
111
109
  if (!sourceMap || typeof source !== "string") return;
112
- const context = /** @type {string} */ (compilation.options.context);
110
+ const context = compilation.options.context;
113
111
  const root = compilation.compiler.root;
114
112
  const cachedAbsolutify = makePathsAbsolute.bindContextCache(context, root);
115
113
  const modules = sourceMap.sources.map((source) => {
@@ -162,9 +160,9 @@ class SourceMapDevToolPlugin {
162
160
  * @returns {void}
163
161
  */
164
162
  apply(compiler) {
165
- const outputFs = /** @type {OutputFileSystem} */ (
166
- compiler.outputFileSystem
167
- );
163
+ const outputFs =
164
+ /** @type {OutputFileSystem} */
165
+ (compiler.outputFileSystem);
168
166
  const sourceMapFilename = this.sourceMapFilename;
169
167
  const sourceMappingURLComment = this.sourceMappingURLComment;
170
168
  const moduleFilenameTemplate = this.moduleFilenameTemplate;
@@ -361,7 +359,7 @@ class SourceMapDevToolPlugin {
361
359
 
362
360
  /**
363
361
  * all modules in defined order (longest identifier first)
364
- * @type {Array<string | Module>}
362
+ * @type {(string | Module)[]}
365
363
  */
366
364
  const allModules = [...moduleToSourceNameMapping.keys()].sort(
367
365
  (a, b) => {
@@ -488,10 +486,7 @@ class SourceMapDevToolPlugin {
488
486
  /** @type {string} */
489
487
  (
490
488
  usesContentHash &&
491
- createHash(
492
- /** @type {HashFunction} */
493
- (compilation.outputOptions.hashFunction)
494
- )
489
+ createHash(compilation.outputOptions.hashFunction)
495
490
  .update(sourceMapString)
496
491
  .digest("hex")
497
492
  );
package/lib/Stats.js CHANGED
@@ -7,7 +7,6 @@
7
7
 
8
8
  /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
9
9
  /** @typedef {import("./Compilation")} Compilation */
10
- /** @typedef {import("./Compilation").NormalizedStatsOptions} NormalizedStatsOptions */
11
10
  /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
12
11
 
13
12
  class Stats {
package/lib/Template.js CHANGED
@@ -10,7 +10,7 @@ const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
11
 
12
12
  /** @typedef {import("webpack-sources").Source} Source */
13
- /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
13
+ /** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
14
14
  /** @typedef {import("./Chunk")} Chunk */
15
15
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
16
16
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
@@ -49,7 +49,7 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
49
49
  * @property {string} fullHash
50
50
  * @property {OutputOptions} outputOptions
51
51
  * @property {CodeGenerationResults} codeGenerationResults
52
- * @property {{javascript: ModuleTemplate}} moduleTemplates
52
+ * @property {{ javascript: ModuleTemplate }} moduleTemplates
53
53
  * @property {DependencyTemplates} dependencyTemplates
54
54
  * @property {RuntimeTemplate} runtimeTemplate
55
55
  * @property {ModuleGraph} moduleGraph
@@ -79,11 +79,6 @@ const MATCH_PADDED_HYPHENS_REPLACE_REGEX = /^-|-$/g;
79
79
  * @property {boolean=} auxiliary
80
80
  */
81
81
 
82
- /**
83
- * @typedef {object} HasId
84
- * @property {number | string} id
85
- */
86
-
87
82
  /**
88
83
  * @typedef {(module: Module) => boolean} ModuleFilterPredicate
89
84
  */
@@ -226,7 +221,7 @@ class Template {
226
221
  }
227
222
 
228
223
  /**
229
- * @param {string|string[]} s string to create prefix for
224
+ * @param {string | string[]} s string to create prefix for
230
225
  * @param {string} prefix prefix to compose
231
226
  * @returns {string} returns new prefix string
232
227
  */
@@ -238,7 +233,7 @@ class Template {
238
233
  }
239
234
 
240
235
  /**
241
- * @param {string|string[]} str string or string collection
236
+ * @param {string | string[]} str string or string collection
242
237
  * @returns {string} returns a single string from array
243
238
  */
244
239
  static asString(str) {
@@ -295,7 +290,7 @@ class Template {
295
290
  if (modules.length === 0) {
296
291
  return null;
297
292
  }
298
- /** @type {{id: string|number, source: Source|string}[]} */
293
+ /** @type {{ id: ModuleId, source: Source | "false" }[]} */
299
294
  const allModules = modules.map((module) => ({
300
295
  id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
301
296
  source: renderModule(module) || "false"
@@ -309,7 +304,7 @@ class Template {
309
304
  source.add(`Array(${minId}).concat(`);
310
305
  }
311
306
  source.add("[\n");
312
- /** @type {Map<string|number, {id: string|number, source: Source|string}>} */
307
+ /** @type {Map<ModuleId, { id: ModuleId, source: Source | "false" }>} */
313
308
  const modules = new Map();
314
309
  for (const module of allModules) {
315
310
  modules.set(module.id, module);
@@ -133,7 +133,8 @@ const deprecated = (fn, message, code) => {
133
133
  );
134
134
  };
135
135
 
136
- /** @typedef {string | ((pathData: PathData, assetInfo?: AssetInfo) => string)} TemplatePath */
136
+ /** @typedef {(pathData: PathData, assetInfo?: AssetInfo) => string} TemplatePathFn */
137
+ /** @typedef {string | TemplatePathFn} TemplatePath */
137
138
 
138
139
  /**
139
140
  * @param {TemplatePath} path the raw path
@@ -9,7 +9,6 @@ const { groupBy } = require("./util/ArrayHelpers");
9
9
  const createSchemaValidation = require("./util/create-schema-validation");
10
10
 
11
11
  /** @typedef {import("../declarations/plugins/WatchIgnorePlugin").WatchIgnorePluginOptions} WatchIgnorePluginOptions */
12
- /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
13
12
  /** @typedef {import("./Compiler")} Compiler */
14
13
  /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
15
14
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
@@ -51,12 +50,12 @@ class IgnoringWatchFileSystem {
51
50
  );
52
51
 
53
52
  const [ignoredFiles, notIgnoredFiles] = groupBy(
54
- /** @type {Array<string>} */
53
+ /** @type {string[]} */
55
54
  (files),
56
55
  ignored
57
56
  );
58
57
  const [ignoredDirs, notIgnoredDirs] = groupBy(
59
- /** @type {Array<string>} */
58
+ /** @type {string[]} */
60
59
  (dirs),
61
60
  ignored
62
61
  );
package/lib/Watching.js CHANGED
@@ -10,20 +10,20 @@ const Stats = require("./Stats");
10
10
  /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
11
11
  /** @typedef {import("./Compilation")} Compilation */
12
12
  /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
13
+ /** @typedef {import("./Compiler").ErrorCallback} ErrorCallback */
14
14
  /** @typedef {import("./WebpackError")} WebpackError */
15
15
  /** @typedef {import("./logging/Logger").Logger} Logger */
16
16
  /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
17
17
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
18
- /** @typedef {import("./util/fs").Watcher} Watcher */
19
18
 
20
19
  /**
21
20
  * @template T
22
- * @callback Callback
23
- * @param {Error | null} err
24
- * @param {T=} result
21
+ * @template [R=void]
22
+ * @typedef {import("./webpack").Callback<T, R>} Callback
25
23
  */
26
24
 
25
+ /** @typedef {Set<string>} CollectedFiles */
26
+
27
27
  class Watching {
28
28
  /**
29
29
  * @param {Compiler} compiler the compiler
@@ -34,9 +34,9 @@ class Watching {
34
34
  this.startTime = null;
35
35
  this.invalid = false;
36
36
  this.handler = handler;
37
- /** @type {Callback<void>[]} */
37
+ /** @type {ErrorCallback[]} */
38
38
  this.callbacks = [];
39
- /** @type {Callback<void>[] | undefined} */
39
+ /** @type {ErrorCallback[] | undefined} */
40
40
  this._closeCallbacks = undefined;
41
41
  this.closed = false;
42
42
  this.suspended = false;
@@ -66,9 +66,9 @@ class Watching {
66
66
  this._needRecords = true;
67
67
  this.watcher = undefined;
68
68
  this.pausedWatcher = undefined;
69
- /** @type {Set<string> | undefined} */
69
+ /** @type {CollectedFiles | undefined} */
70
70
  this._collectedChangedFiles = undefined;
71
- /** @type {Set<string> | undefined} */
71
+ /** @type {CollectedFiles | undefined} */
72
72
  this._collectedRemovedFiles = undefined;
73
73
  this._done = this._done.bind(this);
74
74
  process.nextTick(() => {
@@ -88,12 +88,12 @@ class Watching {
88
88
  } else {
89
89
  for (const file of changedFiles) {
90
90
  this._collectedChangedFiles.add(file);
91
- /** @type {Set<string>} */
91
+ /** @type {CollectedFiles} */
92
92
  (this._collectedRemovedFiles).delete(file);
93
93
  }
94
94
  for (const file of /** @type {ReadonlySet<string>} */ (removedFiles)) {
95
95
  this._collectedChangedFiles.delete(file);
96
- /** @type {Set<string>} */
96
+ /** @type {CollectedFiles} */
97
97
  (this._collectedRemovedFiles).add(file);
98
98
  }
99
99
  }
@@ -262,7 +262,7 @@ class Watching {
262
262
 
263
263
  /**
264
264
  * @param {Error} err error
265
- * @param {Callback<void>[]=} cbs callbacks
265
+ * @param {ErrorCallback[]=} cbs callbacks
266
266
  */
267
267
  const handleError = (err, cbs) => {
268
268
  this.compiler.hooks.failed.call(err);
@@ -393,7 +393,7 @@ class Watching {
393
393
  }
394
394
 
395
395
  /**
396
- * @param {Callback<void>=} callback signals when the build has completed again
396
+ * @param {ErrorCallback=} callback signals when the build has completed again
397
397
  * @returns {void}
398
398
  */
399
399
  invalidate(callback) {
@@ -451,7 +451,7 @@ class Watching {
451
451
  }
452
452
 
453
453
  /**
454
- * @param {Callback<void>} callback signals when the watcher is closed
454
+ * @param {ErrorCallback} callback signals when the watcher is closed
455
455
  * @returns {void}
456
456
  */
457
457
  close(callback) {
@@ -481,7 +481,7 @@ class Watching {
481
481
  const shutdown = (err) => {
482
482
  this.compiler.hooks.watchClose.call();
483
483
  const closeCallbacks =
484
- /** @type {Callback<void>[]} */
484
+ /** @type {ErrorCallback[]} */
485
485
  (this._closeCallbacks);
486
486
  this._closeCallbacks = undefined;
487
487
  for (const cb of closeCallbacks) cb(err);
@@ -16,10 +16,8 @@ const {
16
16
  toConstantDependency
17
17
  } = require("./javascript/JavascriptParserHelpers");
18
18
 
19
- /** @typedef {import("enhanced-resolve").Resolver} Resolver */
20
19
  /** @typedef {import("./Compiler")} Compiler */
21
20
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
22
- /** @typedef {import("./Module")} Module */
23
21
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
24
22
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
25
23
 
@@ -73,9 +73,8 @@ const DefaultStatsPrinterPlugin = require("./stats/DefaultStatsPrinterPlugin");
73
73
 
74
74
  const { cleverMerge } = require("./util/cleverMerge");
75
75
 
76
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
77
76
  /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
78
- /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
77
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
79
78
  /** @typedef {import("./Compiler")} Compiler */
80
79
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
81
80
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
@@ -93,7 +92,7 @@ class WebpackOptionsApply extends OptionsApply {
93
92
  * @returns {WebpackOptions} options object
94
93
  */
95
94
  process(options, compiler) {
96
- compiler.outputPath = /** @type {string} */ (options.output.path);
95
+ compiler.outputPath = options.output.path;
97
96
  compiler.recordsInputPath = options.recordsInputPath || null;
98
97
  compiler.recordsOutputPath = options.recordsOutputPath || null;
99
98
  compiler.name = options.name;
@@ -111,115 +110,92 @@ class WebpackOptionsApply extends OptionsApply {
111
110
  const NodeTargetPlugin = require("./node/NodeTargetPlugin");
112
111
 
113
112
  new NodeTargetPlugin().apply(compiler);
114
- }
115
- if (options.externalsPresets.electronMain) {
116
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
117
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
118
-
119
- new ElectronTargetPlugin("main").apply(compiler);
120
- }
121
- if (options.externalsPresets.electronPreload) {
122
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
123
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
124
113
 
125
- new ElectronTargetPlugin("preload").apply(compiler);
126
- }
127
- if (options.externalsPresets.electronRenderer) {
128
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
129
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
114
+ // Handle external CSS `@import` and `url()`
115
+ if (options.experiments.css) {
116
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
117
+ const ExternalsPlugin = require("./ExternalsPlugin");
130
118
 
131
- new ElectronTargetPlugin("renderer").apply(compiler);
132
- }
133
- if (
134
- options.externalsPresets.electron &&
135
- !options.externalsPresets.electronMain &&
136
- !options.externalsPresets.electronPreload &&
137
- !options.externalsPresets.electronRenderer
138
- ) {
139
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
140
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
119
+ new ExternalsPlugin(
120
+ "module",
121
+ ({ request, dependencyType, contextInfo }, callback) => {
122
+ if (
123
+ /\.css(\?|$)/.test(contextInfo.issuer) &&
124
+ /^(\/\/|https?:\/\/|#)/.test(request)
125
+ ) {
126
+ if (dependencyType === "url") {
127
+ return callback(null, `asset ${request}`);
128
+ } else if (
129
+ dependencyType === "css-import" &&
130
+ options.experiments.css
131
+ ) {
132
+ return callback(null, `css-import ${request}`);
133
+ }
134
+ }
141
135
 
142
- new ElectronTargetPlugin().apply(compiler);
136
+ callback();
137
+ }
138
+ ).apply(compiler);
139
+ }
143
140
  }
144
- if (options.externalsPresets.nwjs) {
145
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
146
- const ExternalsPlugin = require("./ExternalsPlugin");
141
+ if (options.externalsPresets.webAsync || options.externalsPresets.web) {
142
+ const type = options.externalsPresets.webAsync ? "import" : "module";
147
143
 
148
- new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
149
- }
150
- if (options.externalsPresets.webAsync) {
151
144
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
152
145
  const ExternalsPlugin = require("./ExternalsPlugin");
153
146
 
154
- new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
155
- if (dependencyType === "url") {
156
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
147
+ new ExternalsPlugin(type, ({ request, dependencyType }, callback) => {
148
+ if (/^(\/\/|https?:\/\/|#|std:|jsr:|npm:)/.test(request)) {
149
+ if (dependencyType === "url") {
157
150
  return callback(null, `asset ${request}`);
158
- }
159
- } else if (options.experiments.css && dependencyType === "css-import") {
160
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
161
- return callback(null, `css-import ${request}`);
162
- }
163
- } else if (
164
- options.experiments.css &&
165
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
166
- ) {
167
- if (/^\.css(\?|$)/.test(/** @type {string} */ (request))) {
168
- return callback(null, `css-import ${request}`);
169
- }
170
- return callback(null, `import ${request}`);
171
- }
172
- callback();
173
- }).apply(compiler);
174
- } else if (options.externalsPresets.web) {
175
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
176
- const ExternalsPlugin = require("./ExternalsPlugin");
177
-
178
- new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
179
- if (dependencyType === "url") {
180
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
181
- return callback(null, `asset ${request}`);
182
- }
183
- } else if (options.experiments.css && dependencyType === "css-import") {
184
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
185
- return callback(null, `css-import ${request}`);
186
- }
187
- } else if (
188
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
189
- ) {
190
- if (
191
- options.experiments.css &&
192
- /^\.css((\?)|$)/.test(/** @type {string} */ (request))
151
+ } else if (
152
+ dependencyType === "css-import" &&
153
+ options.experiments.css
193
154
  ) {
194
155
  return callback(null, `css-import ${request}`);
156
+ } else if (/^(\/\/|https?:\/\/|std:|jsr:|npm:)/.test(request)) {
157
+ return callback(null, `${type} ${request}`);
195
158
  }
196
- return callback(null, `module ${request}`);
197
159
  }
160
+
198
161
  callback();
199
162
  }).apply(compiler);
200
- } else if (options.externalsPresets.node && options.experiments.css) {
163
+ }
164
+ if (options.externalsPresets.electron) {
165
+ if (options.externalsPresets.electronMain) {
166
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
167
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
168
+
169
+ new ElectronTargetPlugin("main").apply(compiler);
170
+ }
171
+ if (options.externalsPresets.electronPreload) {
172
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
173
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
174
+
175
+ new ElectronTargetPlugin("preload").apply(compiler);
176
+ }
177
+ if (options.externalsPresets.electronRenderer) {
178
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
179
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
180
+
181
+ new ElectronTargetPlugin("renderer").apply(compiler);
182
+ }
183
+ if (
184
+ !options.externalsPresets.electronMain &&
185
+ !options.externalsPresets.electronPreload &&
186
+ !options.externalsPresets.electronRenderer
187
+ ) {
188
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
189
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
190
+
191
+ new ElectronTargetPlugin().apply(compiler);
192
+ }
193
+ }
194
+ if (options.externalsPresets.nwjs) {
201
195
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
202
196
  const ExternalsPlugin = require("./ExternalsPlugin");
203
197
 
204
- new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
205
- if (dependencyType === "url") {
206
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
207
- return callback(null, `asset ${request}`);
208
- }
209
- } else if (dependencyType === "css-import") {
210
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request))) {
211
- return callback(null, `css-import ${request}`);
212
- }
213
- } else if (
214
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
215
- ) {
216
- if (/^\.css(\?|$)/.test(/** @type {string} */ (request))) {
217
- return callback(null, `css-import ${request}`);
218
- }
219
- return callback(null, `module ${request}`);
220
- }
221
- callback();
222
- }).apply(compiler);
198
+ new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
223
199
  }
224
200
 
225
201
  new ChunkPrefetchPreloadPlugin().apply(compiler);
@@ -446,11 +422,7 @@ class WebpackOptionsApply extends OptionsApply {
446
422
  }
447
423
 
448
424
  new EntryOptionPlugin().apply(compiler);
449
- compiler.hooks.entryOption.call(
450
- /** @type {string} */
451
- (options.context),
452
- options.entry
453
- );
425
+ compiler.hooks.entryOption.call(options.context, options.entry);
454
426
 
455
427
  new RuntimePlugin().apply(compiler);
456
428
 
@@ -461,7 +433,6 @@ class WebpackOptionsApply extends OptionsApply {
461
433
 
462
434
  new CompatibilityPlugin().apply(compiler);
463
435
  new HarmonyModulesPlugin({
464
- topLevelAwait: options.experiments.topLevelAwait,
465
436
  deferImport: options.experiments.deferImport
466
437
  }).apply(compiler);
467
438
  if (options.amd !== false) {
@@ -478,9 +449,7 @@ class WebpackOptionsApply extends OptionsApply {
478
449
 
479
450
  new NodeStuffPlugin(options.node).apply(compiler);
480
451
  }
481
- new APIPlugin({
482
- module: options.output.module
483
- }).apply(compiler);
452
+ new APIPlugin().apply(compiler);
484
453
  new ExportsInfoApiPlugin().apply(compiler);
485
454
  new WebpackIsIncludedPlugin().apply(compiler);
486
455
  new ConstPlugin().apply(compiler);
@@ -703,9 +672,7 @@ class WebpackOptionsApply extends OptionsApply {
703
672
  }).apply(compiler);
704
673
  }
705
674
  if (options.optimization.minimize) {
706
- for (const minimizer of /** @type {(WebpackPluginInstance | WebpackPluginFunction | "...")[]} */ (
707
- options.optimization.minimizer
708
- )) {
675
+ for (const minimizer of options.optimization.minimizer) {
709
676
  if (typeof minimizer === "function") {
710
677
  /** @type {WebpackPluginFunction} */
711
678
  (minimizer).call(compiler, compiler);
@@ -810,7 +777,7 @@ class WebpackOptionsApply extends OptionsApply {
810
777
  fs:
811
778
  /** @type {IntermediateFileSystem} */
812
779
  (compiler.intermediateFileSystem),
813
- context: /** @type {string} */ (options.context),
780
+ context: options.context,
814
781
  cacheLocation:
815
782
  /** @type {string} */
816
783
  (cacheOptions.cacheLocation),