webpack 5.112.0 → 5.112.2

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 (263) hide show
  1. package/bin/webpack.js +13 -7
  2. package/lib/Compilation.js +198 -61
  3. package/lib/Compiler.js +12 -25
  4. package/lib/asset/AssetBytesGenerator.js +14 -6
  5. package/lib/asset/AssetBytesParser.js +10 -8
  6. package/lib/asset/AssetGenerator.js +36 -48
  7. package/lib/asset/AssetModule.js +11 -0
  8. package/lib/asset/AssetModulesPlugin.js +5 -4
  9. package/lib/asset/AssetParser.js +8 -8
  10. package/lib/asset/AssetSourceGenerator.js +16 -8
  11. package/lib/asset/AssetSourceParser.js +10 -8
  12. package/lib/asset/WebManifestGenerator.js +11 -6
  13. package/lib/asset/WebManifestParser.js +3 -3
  14. package/lib/async-modules/AsyncModuleHelpers.js +8 -2
  15. package/lib/async-modules/InferAsyncModulesPlugin.js +7 -2
  16. package/lib/cache/CacheFacade.js +1 -1
  17. package/lib/cache/PackFileCacheStrategy.js +6 -10
  18. package/lib/cache/ResolverCachePlugin.js +58 -8
  19. package/lib/config/WebpackOptionsApply.js +8 -28
  20. package/lib/config/cli.js +9 -6
  21. package/lib/config/defaults.js +24 -13
  22. package/lib/config/getClaimedAssetTypes.js +2 -2
  23. package/lib/config/target.js +1 -1
  24. package/lib/context/ContextModule.js +1 -1
  25. package/lib/context/ContextModuleFactory.js +1 -1
  26. package/lib/context/ContextReplacementPlugin.js +3 -9
  27. package/lib/css/CssGenerator.js +40 -47
  28. package/lib/css/CssModule.js +10 -0
  29. package/lib/css/CssModulesPlugin.js +13 -6
  30. package/lib/css/CssParser.js +33 -32
  31. package/lib/css/conventions.js +1 -1
  32. package/lib/css/data.js +224 -219
  33. package/lib/css/syntax-parser.js +1312 -312
  34. package/lib/css/syntax-printer.js +1142 -1025
  35. package/lib/debug/ProfilingPlugin.js +65 -43
  36. package/lib/define/DefinePlugin.js +10 -15
  37. package/lib/define/DotenvPlugin.js +10 -6
  38. package/lib/define/EnvironmentPlugin.js +4 -2
  39. package/lib/dependencies/amd/AMDDefineDependencyParserPlugin.js +1 -2
  40. package/lib/dependencies/amd/AMDRequireDependenciesBlockParserPlugin.js +4 -1
  41. package/lib/dependencies/commonjs/CommonJsExportRequireDependency.js +1 -4
  42. package/lib/dependencies/commonjs/CommonJsExportsParserPlugin.js +18 -33
  43. package/lib/dependencies/commonjs/CommonJsImportsParserPlugin.js +1 -3
  44. package/lib/dependencies/commonjs/CommonJsObjectExportDependency.js +4 -4
  45. package/lib/dependencies/commonjs/CommonJsPlugin.js +2 -5
  46. package/lib/dependencies/commonjs/RequireEnsureDependenciesBlockParserPlugin.js +4 -1
  47. package/lib/dependencies/context/ImportMetaContextDependencyParserPlugin.js +1 -2
  48. package/lib/dependencies/context/ImportMetaGlobDependencyParserPlugin.js +4 -7
  49. package/lib/dependencies/context/ImportMetaGlobHelpers.js +8 -10
  50. package/lib/dependencies/core/CachedConstDependency.js +9 -6
  51. package/lib/dependencies/css/CssIcssExportDependency.js +6 -7
  52. package/lib/dependencies/css/CssIcssImportDependency.js +1 -3
  53. package/lib/dependencies/css/CssUrlDependency.js +2 -6
  54. package/lib/dependencies/esm/ESMDetectionParserPlugin.js +2 -4
  55. package/lib/dependencies/esm/ESMExportExpressionDependency.js +2 -2
  56. package/lib/dependencies/esm/ESMExportImportedSpecifierDependency.js +16 -18
  57. package/lib/dependencies/esm/ESMExportSpecifierDependency.js +20 -3
  58. package/lib/dependencies/esm/ESMExports.js +2 -10
  59. package/lib/dependencies/esm/ESMImportDependency.js +17 -2
  60. package/lib/dependencies/esm/ESMImportDependencyParserPlugin.js +6 -17
  61. package/lib/dependencies/esm/ESMImportGuard.js +11 -23
  62. package/lib/dependencies/esm/ESMImportSideEffectDependency.js +1 -1
  63. package/lib/dependencies/esm/ESMImportSpecifierDependency.js +4 -1
  64. package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
  65. package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
  66. package/lib/dependencies/esm/ESMModulesPlugin.js +1 -3
  67. package/lib/dependencies/esm/TopLevelAwaitDependency.js +1 -8
  68. package/lib/dependencies/helpers/DynamicExports.js +4 -6
  69. package/lib/dependencies/html/HtmlEntryDependency.js +5 -14
  70. package/lib/dependencies/html/HtmlInlineHtmlDependency.js +1 -4
  71. package/lib/dependencies/html/HtmlInlineScriptDependency.js +2 -6
  72. package/lib/dependencies/html/HtmlInlineStyleDependency.js +1 -4
  73. package/lib/dependencies/import/ImportParserPlugin.js +3 -6
  74. package/lib/dependencies/import-meta/ImportMetaPlugin.js +4 -6
  75. package/lib/dependencies/url/URLParserPlugin.js +1 -1
  76. package/lib/dependencies/worker/WorkerAndWorkletPlugin.js +51 -20
  77. package/lib/devtool/ModuleFilenameHelpers.js +1 -1
  78. package/lib/devtool/SourceMapDevToolPlugin.js +1 -1
  79. package/lib/dll/DelegatedModule.js +3 -3
  80. package/lib/dll/DllModule.js +3 -1
  81. package/lib/dll/DllReferencePlugin.js +1 -4
  82. package/lib/errors/AbstractMethodError.js +1 -1
  83. package/lib/errors/ErrorHelpers.js +2 -1
  84. package/lib/errors/HookWebpackError.js +2 -1
  85. package/lib/errors/JSONParseError.js +4 -4
  86. package/lib/errors/WebpackError.js +3 -2
  87. package/lib/esm/ModuleChunkFormatPlugin.js +36 -1
  88. package/lib/externals/ExternalModule.js +12 -9
  89. package/lib/externals/ExternalModuleFactoryPlugin.js +1 -2
  90. package/lib/externals/ExternalsPlugin.js +1 -1
  91. package/lib/fs/FileSystemInfo.js +4 -4
  92. package/lib/graph/AsyncDependenciesBlock.js +1 -1
  93. package/lib/graph/ChunkGraph.js +5 -0
  94. package/lib/graph/Dependency.js +8 -2
  95. package/lib/graph/ExportsInfo.js +1 -1
  96. package/lib/graph/ModuleGraph.js +14 -3
  97. package/lib/graph/buildChunkGraph.js +17 -19
  98. package/lib/graph/findGraphRoots.js +1 -1
  99. package/lib/hmr/HotModuleReplacement.runtime.js +10 -9
  100. package/lib/hmr/HotModuleReplacementPlugin.js +5 -11
  101. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +16 -19
  102. package/lib/hmr/LazyCompilationPlugin.js +1 -7
  103. package/lib/html/HtmlGenerator.js +25 -17
  104. package/lib/html/HtmlModule.js +11 -1
  105. package/lib/html/HtmlModulesPlugin.js +12 -11
  106. package/lib/html/HtmlParser.js +10 -9
  107. package/lib/html/builtinEmbeddedRenderer.js +31 -33
  108. package/lib/html/data.js +42 -21
  109. package/lib/html/htmlMinify.js +4 -1
  110. package/lib/html/syntax-parser.js +34 -35
  111. package/lib/html/syntax-printer.js +2 -3
  112. package/lib/html/xmlMinify.js +4 -1
  113. package/lib/ids/HashedModuleIdsPlugin.js +1 -1
  114. package/lib/index.js +13 -12
  115. package/lib/javascript/APIPlugin.js +7 -13
  116. package/lib/javascript/BasicEvaluatedExpression.js +5 -5
  117. package/lib/javascript/CommonJsChunkFormatPlugin.js +2 -7
  118. package/lib/javascript/ConstPlugin.js +1 -1
  119. package/lib/javascript/JavascriptGenerator.js +16 -11
  120. package/lib/javascript/JavascriptMetaInfoPlugin.js +3 -15
  121. package/lib/javascript/JavascriptModule.js +10 -0
  122. package/lib/javascript/JavascriptModulesPlugin.js +2 -4
  123. package/lib/javascript/JavascriptParser.js +99 -11
  124. package/lib/javascript/ScopeAnalyzer.js +183 -107
  125. package/lib/javascript/UseStrictPlugin.js +2 -5
  126. package/lib/javascript/jsMinify.js +1 -1
  127. package/lib/javascript/regexp.js +2 -2
  128. package/lib/javascript/syntax-parser.js +2114 -1506
  129. package/lib/javascript/syntax-printer-data.js +167 -1
  130. package/lib/javascript/syntax-printer.js +9554 -2782
  131. package/lib/json/JsonGenerator.js +15 -7
  132. package/lib/json/JsonModule.js +11 -0
  133. package/lib/json/JsonParser.js +7 -6
  134. package/lib/library/AssignLibraryPlugin.js +1 -1
  135. package/lib/library/JsonpLibraryPlugin.js +1 -1
  136. package/lib/library/ModuleLibraryPlugin.js +399 -23
  137. package/lib/loaders/LoaderRunner.js +76 -38
  138. package/lib/loaders/loadLoader.js +16 -10
  139. package/lib/module/Generator.js +17 -9
  140. package/lib/module/Module.js +2 -2
  141. package/lib/module/NormalModule.js +7 -5
  142. package/lib/module/NormalModuleFactory.js +11 -17
  143. package/lib/module/Parser.js +9 -2
  144. package/lib/module/extractSourceMap.js +69 -18
  145. package/lib/module/findCaseMismatch.js +2 -2
  146. package/lib/node/ExternalModuleInitFragment.js +2 -2
  147. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -12
  148. package/lib/node/ReadFileCompileWasmPlugin.js +2 -6
  149. package/lib/node/nodeConsole.js +4 -3
  150. package/lib/optimize/CircularModulesPlugin.js +1 -1
  151. package/lib/optimize/ConcatenatedModule.js +4 -8
  152. package/lib/optimize/FlagDependencyExportsPlugin.js +6 -11
  153. package/lib/optimize/FlagDependencyUsagePlugin.js +28 -3
  154. package/lib/optimize/InlineExports.js +4 -7
  155. package/lib/optimize/LazyBarrels.js +41 -5
  156. package/lib/optimize/ModuleConcatenationPlugin.js +8 -10
  157. package/lib/optimize/RealContentHashPlugin.js +2 -6
  158. package/lib/optimize/SideEffectsFlagPlugin.js +7 -21
  159. package/lib/optimize/SplitChunksPlugin.js +11 -24
  160. package/lib/optimize/TupleQueue.js +1 -1
  161. package/lib/output/CleanPlugin.js +3 -1
  162. package/lib/output/CopyPlugin.js +3 -4
  163. package/lib/performance/EvalUsagePlugin.js +1 -3
  164. package/lib/performance/HotspotsPlugin.js +33 -9
  165. package/lib/performance/PureAnnotationsPlugin.js +16 -10
  166. package/lib/performance/TopLevelThisPlugin.js +17 -9
  167. package/lib/prefetch/ResourceHintPlugin.js +1 -1
  168. package/lib/provide/ProvidedDependency.js +36 -4
  169. package/lib/rules/BasicEffectRulePlugin.js +1 -1
  170. package/lib/rules/RuleSetCompiler.js +15 -5
  171. package/lib/rules/UseEffectRulePlugin.js +1 -3
  172. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -1
  173. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -5
  174. package/lib/runtime/RuntimeGlobals.js +6 -0
  175. package/lib/runtime/RuntimePlugin.js +2 -0
  176. package/lib/schemes/HttpUriPlugin.js +1 -2
  177. package/lib/schemes/VirtualUrlPlugin.js +3 -1
  178. package/lib/serialization/AggregateErrorSerializer.js +3 -3
  179. package/lib/serialization/BinaryMiddleware.js +4 -1
  180. package/lib/serialization/ErrorObjectSerializer.js +2 -5
  181. package/lib/serialization/ObjectMiddleware.js +17 -15
  182. package/lib/serialization/PlainObjectSerializer.js +3 -7
  183. package/lib/serialization/Serializer.js +21 -11
  184. package/lib/serialization/SerializerMiddleware.js +8 -6
  185. package/lib/stats/DefaultStatsFactoryPlugin.js +35 -35
  186. package/lib/stats/DefaultStatsPresetPlugin.js +2 -6
  187. package/lib/stats/DefaultStatsPrinterPlugin.js +12 -11
  188. package/lib/stats/StatsFactory.js +194 -24
  189. package/lib/stats/StatsPrinter.js +126 -13
  190. package/lib/template/DependencyTemplate.js +1 -1
  191. package/lib/template/RuntimeTemplate.js +13 -32
  192. package/lib/template/Template.js +1 -1
  193. package/lib/util/SourceProcessor.js +146 -29
  194. package/lib/util/WeakTupleMap.js +10 -4
  195. package/lib/util/cleverMerge.js +61 -33
  196. package/lib/util/comparators.js +9 -5
  197. package/lib/util/dataURL.js +2 -0
  198. package/lib/util/deprecation.js +4 -3
  199. package/lib/util/globUtils.js +1 -4
  200. package/lib/util/internalSerializables.js +2 -0
  201. package/lib/util/makeSerializable.js +6 -4
  202. package/lib/util/memoize.js +1 -1
  203. package/lib/util/parseJson.js +2 -2
  204. package/lib/util/serialization.js +31 -27
  205. package/lib/wasm/AsyncWasmModule.js +12 -2
  206. package/lib/wasm/AsyncWebAssemblyGenerator.js +12 -4
  207. package/lib/wasm/AsyncWebAssemblyJavascriptGenerator.js +13 -5
  208. package/lib/wasm/AsyncWebAssemblyParser.js +7 -5
  209. package/lib/wasm/UniversalCompileAsyncWasmPlugin.js +2 -6
  210. package/lib/wasm-sync/SyncWasmModule.js +16 -1
  211. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -10
  212. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +13 -5
  213. package/lib/wasm-sync/WebAssemblyParser.js +10 -12
  214. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -12
  215. package/lib/web/FetchCompileWasmPlugin.js +2 -6
  216. package/package.json +18 -19
  217. package/schemas/WebpackOptions.check.js +3 -3
  218. package/schemas/WebpackOptions.json +2 -2
  219. package/schemas/plugins/BannerPlugin.check.js +3 -3
  220. package/schemas/plugins/HtmlGeneratorOptions.check.js +3 -3
  221. package/schemas/plugins/HtmlParserOptions.check.js +3 -3
  222. package/schemas/plugins/IgnorePlugin.check.js +3 -3
  223. package/schemas/plugins/LoaderOptionsPlugin.check.js +3 -3
  224. package/schemas/plugins/ManifestPlugin.check.js +3 -3
  225. package/schemas/plugins/ProgressPlugin.check.js +3 -3
  226. package/schemas/plugins/SSRManifestPlugin.check.js +3 -3
  227. package/schemas/plugins/SourceMapDevToolPlugin.check.js +3 -3
  228. package/schemas/plugins/WatchIgnorePlugin.check.js +3 -3
  229. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +3 -3
  230. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +3 -3
  231. package/schemas/plugins/asset/AssetParserOptions.check.js +3 -3
  232. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +3 -3
  233. package/schemas/plugins/container/ContainerPlugin.check.js +3 -3
  234. package/schemas/plugins/container/ContainerReferencePlugin.check.js +3 -3
  235. package/schemas/plugins/container/ExternalsType.check.js +3 -3
  236. package/schemas/plugins/container/ModuleFederationPlugin.check.js +3 -3
  237. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +3 -3
  238. package/schemas/plugins/css/CssGeneratorOptions.check.js +3 -3
  239. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +3 -3
  240. package/schemas/plugins/css/CssModuleParserOptions.check.js +3 -3
  241. package/schemas/plugins/css/CssParserOptions.check.js +3 -3
  242. package/schemas/plugins/debug/ProfilingPlugin.check.js +3 -3
  243. package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
  244. package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
  245. package/schemas/plugins/dll/DllPlugin.check.js +3 -3
  246. package/schemas/plugins/dll/DllReferencePlugin.check.js +3 -3
  247. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +3 -3
  248. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +3 -3
  249. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +3 -3
  250. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +3 -3
  251. package/schemas/plugins/json/JsonModulesPluginParser.check.js +3 -3
  252. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +3 -3
  253. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +3 -3
  254. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +3 -3
  255. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +3 -3
  256. package/schemas/plugins/output/CleanOptions.check.js +7 -0
  257. package/schemas/plugins/output/CleanOptions.json +3 -0
  258. package/schemas/plugins/schemes/HttpUriPlugin.check.js +3 -3
  259. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +3 -3
  260. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +3 -3
  261. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +3 -3
  262. package/schemas/plugins/sharing/SharePlugin.check.js +3 -3
  263. package/types.d.ts +1482 -358
@@ -119,9 +119,7 @@ class UniversalCompileAsyncWasmPlugin {
119
119
  chunk,
120
120
  new AsyncWasmLoadingRuntimeModule({
121
121
  fullHashDigest: usesFullHashDigest(
122
- /** @type {string} */ (
123
- compilation.outputOptions.webassemblyModuleFilename
124
- )
122
+ compilation.outputOptions.webassemblyModuleFilename
125
123
  ),
126
124
  generateBeforeLoadBinaryCode,
127
125
  generateLoadBinaryCode,
@@ -147,9 +145,7 @@ class UniversalCompileAsyncWasmPlugin {
147
145
  chunk,
148
146
  new AsyncWasmCompileRuntimeModule({
149
147
  fullHashDigest: usesFullHashDigest(
150
- /** @type {string} */ (
151
- compilation.outputOptions.webassemblyModuleFilename
152
- )
148
+ compilation.outputOptions.webassemblyModuleFilename
153
149
  ),
154
150
  generateBeforeLoadBinaryCode,
155
151
  generateLoadBinaryCode,
@@ -8,7 +8,12 @@ const NormalModule = require("../module/NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
10
  /** @import { BuildMeta } from "../module/Module" */
11
- /** @import { NormalModuleCreateData } from "../module/NormalModule" */
11
+ /**
12
+ * @import {
13
+ * NormalModuleBuildInfo,
14
+ * NormalModuleCreateData
15
+ * } from "../module/NormalModule"
16
+ */
12
17
 
13
18
  /**
14
19
  * Defines the build meta properties specific to sync wasm modules.
@@ -18,6 +23,16 @@ const makeSerializable = require("../util/makeSerializable");
18
23
 
19
24
  /** @typedef {BuildMeta & KnownSyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
20
25
 
26
+ /**
27
+ * A sync wasm module before or after its build, typed with its build meta.
28
+ * @typedef {NormalModule & { buildMeta?: SyncWasmModuleBuildMeta }} SyncWasmNormalModule
29
+ */
30
+
31
+ /**
32
+ * A built sync wasm module, typed with its build info and build meta.
33
+ * @typedef {NormalModule & { buildInfo: NormalModuleBuildInfo, buildMeta: SyncWasmModuleBuildMeta }} BuiltSyncWasmModule
34
+ */
35
+
21
36
  /**
22
37
  * Module class for `webassembly/sync` modules. Wasm-specific properties should live here instead of `NormalModule`.
23
38
  */
@@ -15,12 +15,11 @@ const Generator = require("../module/Generator");
15
15
  const { WEBASSEMBLY_TYPES } = require("../module/ModuleSourceTypeConstants");
16
16
  const WebAssemblyUtils = require("./WebAssemblyUtils");
17
17
 
18
- /** @import WebAssemblyExportImportedDependency from "../dependencies/wasm/WebAssemblyExportImportedDependency" */
18
+ /** @import { SyncWasmNormalModule } from "./SyncWasmModule" */
19
19
  /** @import { Source } from "webpack-sources" */
20
20
  /** @import { GenerateContext, UpdateHashContext } from "../module/Generator" */
21
21
  /** @import Module, { SourceType, SourceTypes } from "../module/Module" */
22
22
  /** @import ModuleGraph from "../graph/ModuleGraph" */
23
- /** @import NormalModule from "../module/NormalModule" */
24
23
  /** @import Hash from "../util/Hash" */
25
24
  /** @import { RuntimeSpec } from "../util/runtime" */
26
25
  /** @import { UsedWasmDependency } from "./WebAssemblyUtils" */
@@ -421,6 +420,14 @@ const getUsedDependencyMap = (moduleGraph, module, mangle) => {
421
420
  * @property {boolean=} mangleImports mangle imports
422
421
  */
423
422
 
423
+ /**
424
+ * The module type the JSDoc inherited from `Generator` names.
425
+ * @typedef {SyncWasmNormalModule} TModule
426
+ */
427
+
428
+ /**
429
+ * @extends {Generator<TModule>}
430
+ */
424
431
  class WebAssemblyGenerator extends Generator {
425
432
  /**
426
433
  * Creates an instance of WebAssemblyGenerator.
@@ -434,7 +441,7 @@ class WebAssemblyGenerator extends Generator {
434
441
 
435
442
  /**
436
443
  * Returns the source types available for this module.
437
- * @param {NormalModule} module fresh module
444
+ * @param {TModule} module fresh module
438
445
  * @returns {SourceTypes} available types (do not mutate)
439
446
  */
440
447
  getTypes(module) {
@@ -443,7 +450,7 @@ class WebAssemblyGenerator extends Generator {
443
450
 
444
451
  /**
445
452
  * Returns the estimated size for the requested source type.
446
- * @param {NormalModule} module the module
453
+ * @param {TModule} module the module
447
454
  * @param {SourceType=} type source type
448
455
  * @returns {number} estimate size of the module
449
456
  */
@@ -457,7 +464,7 @@ class WebAssemblyGenerator extends Generator {
457
464
 
458
465
  /**
459
466
  * Generates generated code for this runtime module.
460
- * @param {NormalModule} module module for which the code should be generated
467
+ * @param {TModule} module module for which the code should be generated
461
468
  * @param {GenerateContext} generateContext context for generate
462
469
  * @returns {Source | null} generated code
463
470
  */
@@ -492,9 +499,7 @@ class WebAssemblyGenerator extends Generator {
492
499
  module.dependencies
493
500
  .filter((d) => isDependencyKind(d, "webassembly-export-imported"))
494
501
  .map((d) => {
495
- const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (
496
- d
497
- );
502
+ const wasmDep = d;
498
503
  return wasmDep.exportName;
499
504
  })
500
505
  );
@@ -540,7 +545,7 @@ class WebAssemblyGenerator extends Generator {
540
545
  /**
541
546
  * Generates fallback output for the provided error condition.
542
547
  * @param {Error} error the error
543
- * @param {NormalModule} module module for which the code should be generated
548
+ * @param {TModule} module module for which the code should be generated
544
549
  * @param {GenerateContext} generateContext context for generate
545
550
  * @returns {Source | null} generated code
546
551
  */
@@ -556,7 +561,7 @@ class WebAssemblyGenerator extends Generator {
556
561
  /**
557
562
  * Updates the hash with the data contributed by this instance.
558
563
  * @param {Hash} hash hash that will be modified
559
- * @param {UpdateHashContext} updateHashContext context for updating hash
564
+ * @param {UpdateHashContext<TModule>} updateHashContext context for updating hash
560
565
  */
561
566
  updateHash(hash, updateHashContext) {
562
567
  if (this.options.mangleImports) {
@@ -14,16 +14,24 @@ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
14
14
  const InitFragment = require("../template/InitFragment");
15
15
  const Template = require("../template/Template");
16
16
 
17
+ /** @import { SyncWasmNormalModule } from "./SyncWasmModule" */
17
18
  /** @import { Source } from "webpack-sources" */
18
19
  /** @import { GenerateContext } from "../module/Generator" */
19
20
  /** @import ModuleDependency from "../dependencies/core/ModuleDependency" */
20
21
  /** @import Module, { SourceType, SourceTypes } from "../module/Module" */
21
- /** @import NormalModule from "../module/NormalModule" */
22
22
 
23
+ /**
24
+ * The module type the JSDoc inherited from `Generator` names.
25
+ * @typedef {SyncWasmNormalModule} TModule
26
+ */
27
+
28
+ /**
29
+ * @extends {Generator<TModule>}
30
+ */
23
31
  class WebAssemblyJavascriptGenerator extends Generator {
24
32
  /**
25
33
  * Returns the source types available for this module.
26
- * @param {NormalModule} module fresh module
34
+ * @param {TModule} module fresh module
27
35
  * @returns {SourceTypes} available types (do not mutate)
28
36
  */
29
37
  getTypes(module) {
@@ -32,7 +40,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
32
40
 
33
41
  /**
34
42
  * Returns the estimated size for the requested source type.
35
- * @param {NormalModule} module the module
43
+ * @param {TModule} module the module
36
44
  * @param {SourceType=} type source type
37
45
  * @returns {number} estimate size of the module
38
46
  */
@@ -42,7 +50,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
42
50
 
43
51
  /**
44
52
  * Generates generated code for this runtime module.
45
- * @param {NormalModule} module module for which the code should be generated
53
+ * @param {TModule} module module for which the code should be generated
46
54
  * @param {GenerateContext} generateContext context for generate
47
55
  * @returns {Source | null} generated code
48
56
  */
@@ -225,7 +233,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
225
233
  /**
226
234
  * Generates fallback output for the provided error condition.
227
235
  * @param {Error} error the error
228
- * @param {NormalModule} module module for which the code should be generated
236
+ * @param {TModule} module module for which the code should be generated
229
237
  * @param {GenerateContext} generateContext context for generate
230
238
  * @returns {Source | null} generated code
231
239
  */
@@ -13,9 +13,8 @@ const WebAssemblyExportImportedDependency = require("../dependencies/wasm/WebAss
13
13
  const WebAssemblyImportDependency = require("../dependencies/wasm/WebAssemblyImportDependency");
14
14
  const Parser = require("../module/Parser");
15
15
 
16
+ /** @import { BuiltSyncWasmModule } from "./SyncWasmModule" */
16
17
  /** @import { ModuleImport } from "@webassemblyjs/ast" */
17
- /** @import { BuildInfo, BuildMeta } from "../module/Module" */
18
- /** @import { SyncWasmModuleBuildMeta } from "./SyncWasmModule" */
19
18
  /** @import { ParserState, PreparsedAst } from "../module/Parser" */
20
19
 
21
20
  const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
@@ -63,6 +62,9 @@ const decoderOpts = {
63
62
  ignoreCustomNameSection: true
64
63
  };
65
64
 
65
+ /**
66
+ * @extends {Parser<BuiltSyncWasmModule>}
67
+ */
66
68
  class WebAssemblyParser extends Parser {
67
69
  /**
68
70
  * Parses the provided source and updates the parser state.
@@ -76,10 +78,11 @@ class WebAssemblyParser extends Parser {
76
78
  }
77
79
 
78
80
  // flag it as ESM
79
- /** @type {BuildInfo} */
80
- (state.module.buildInfo).strict = true;
81
- /** @type {BuildMeta} */
82
- (state.module.buildMeta).exportsType = "namespace";
81
+ const { buildInfo, buildMeta } = /** @type {BuiltSyncWasmModule} */ (
82
+ state.module
83
+ );
84
+ buildInfo.strict = true;
85
+ buildMeta.exportsType = "namespace";
83
86
 
84
87
  // parse it
85
88
  const program = decode(source, decoderOpts);
@@ -90,9 +93,6 @@ class WebAssemblyParser extends Parser {
90
93
  // extract imports and exports
91
94
  /** @type {string[]} */
92
95
  const exports = [];
93
- const buildMeta = /** @type {SyncWasmModuleBuildMeta} */ (
94
- state.module.buildMeta
95
- );
96
96
  /** @type {Record<string, string> | undefined} */
97
97
  let jsIncompatibleExports = (buildMeta.jsIncompatibleExports = undefined);
98
98
 
@@ -115,9 +115,7 @@ class WebAssemblyParser extends Parser {
115
115
 
116
116
  if (incompatibleType) {
117
117
  if (jsIncompatibleExports === undefined) {
118
- jsIncompatibleExports =
119
- /** @type {SyncWasmModuleBuildMeta} */
120
- (state.module.buildMeta).jsIncompatibleExports = {};
118
+ jsIncompatibleExports = buildMeta.jsIncompatibleExports = {};
121
119
  }
122
120
  jsIncompatibleExports[node.name] = incompatibleType;
123
121
  }
@@ -114,9 +114,7 @@ class FetchCompileAsyncWasmPlugin {
114
114
  if (
115
115
  !baked &&
116
116
  needsRuntimeFullHash(
117
- /** @type {string} */ (
118
- compilation.outputOptions.webassemblyModuleFilename
119
- )
117
+ compilation.outputOptions.webassemblyModuleFilename
120
118
  )
121
119
  ) {
122
120
  set.add(RuntimeGlobals.getFullHash);
@@ -125,9 +123,7 @@ class FetchCompileAsyncWasmPlugin {
125
123
  chunk,
126
124
  new AsyncWasmLoadingRuntimeModule({
127
125
  fullHashDigest: usesFullHashDigest(
128
- /** @type {string} */ (
129
- compilation.outputOptions.webassemblyModuleFilename
130
- )
126
+ compilation.outputOptions.webassemblyModuleFilename
131
127
  ),
132
128
  generateLoadBinaryCode: baked
133
129
  ? generateBakedLoadBinaryCode
@@ -176,9 +172,7 @@ class FetchCompileAsyncWasmPlugin {
176
172
  if (
177
173
  !baked &&
178
174
  needsRuntimeFullHash(
179
- /** @type {string} */ (
180
- compilation.outputOptions.webassemblyModuleFilename
181
- )
175
+ compilation.outputOptions.webassemblyModuleFilename
182
176
  )
183
177
  ) {
184
178
  set.add(RuntimeGlobals.getFullHash);
@@ -187,9 +181,7 @@ class FetchCompileAsyncWasmPlugin {
187
181
  chunk,
188
182
  new AsyncWasmCompileRuntimeModule({
189
183
  fullHashDigest: usesFullHashDigest(
190
- /** @type {string} */ (
191
- compilation.outputOptions.webassemblyModuleFilename
192
- )
184
+ compilation.outputOptions.webassemblyModuleFilename
193
185
  ),
194
186
  generateLoadBinaryCode: baked
195
187
  ? generateBakedLoadBinaryCode
@@ -113,9 +113,7 @@ class FetchCompileWasmPlugin {
113
113
  }
114
114
  if (
115
115
  needsRuntimeFullHash(
116
- /** @type {string} */ (
117
- compilation.outputOptions.webassemblyModuleFilename
118
- )
116
+ compilation.outputOptions.webassemblyModuleFilename
119
117
  )
120
118
  ) {
121
119
  set.add(RuntimeGlobals.getFullHash);
@@ -124,9 +122,7 @@ class FetchCompileWasmPlugin {
124
122
  chunk,
125
123
  new WasmChunkLoadingRuntimeModule({
126
124
  fullHashDigest: usesFullHashDigest(
127
- /** @type {string} */ (
128
- compilation.outputOptions.webassemblyModuleFilename
129
- )
125
+ compilation.outputOptions.webassemblyModuleFilename
130
126
  ),
131
127
  generateLoadBinaryCode: analyzable
132
128
  ? generateAnalyzableLoadBinaryCode
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.112.0",
3
+ "version": "5.112.2",
4
4
  "description": "Packs ECMAScript/CommonJs/AMD modules for the browser. Allows you to split your codebase into multiple bundles, which can be loaded on demand. Supports loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
5
5
  "homepage": "https://github.com/webpack/webpack",
6
6
  "bugs": "https://github.com/webpack/webpack/issues",
@@ -32,10 +32,11 @@
32
32
  "prepare": "husky",
33
33
  "setup": "node ./setup/setup.js",
34
34
  "prelint": "yarn setup",
35
- "lint": "yarn lint:agents && yarn lint:special && node tooling/run-parallel.js lint:code lint:class-names lint:types-all fmt:check lint:spellcheck",
35
+ "lint": "yarn lint:agents && yarn lint:special && node tooling/run-parallel.js lint:code lint:class-names lint:redundant-casts lint:types-all fmt:check lint:spellcheck",
36
36
  "lint:agents": "node tooling/check-agents-md-size.js",
37
37
  "lint:class-names": "node tooling/check-class-names.js",
38
38
  "lint:code": "node node_modules/eslint/bin/eslint.js --cache --concurrency auto .",
39
+ "lint:redundant-casts": "node tooling/check-redundant-type-assertions.js",
39
40
  "lint:special": "node tooling/generate-runtime-code.js && node tooling/generate-wasm-code.js && node tooling/generate-css-data.js && node tooling/generate-html-data.js && node tooling/generate-js-data.js && node tooling/generate-schemas.js && node tooling/precompile-schemas.js && node tooling/generate-types.js --no-template-literals && node tooling/generate-internal-serializables.js",
40
41
  "lint:types": "node tooling/tsc-incremental.js types",
41
42
  "lint:types-test": "node tooling/tsc-incremental.js types-test -p tsconfig.types.test.json",
@@ -55,7 +56,7 @@
55
56
  "fix:special": "node tooling/generate-runtime-code.js --write && node tooling/generate-wasm-code.js --write && node tooling/generate-css-data.js --write && node tooling/generate-html-data.js --write && node tooling/generate-js-data.js --write && node tooling/generate-schemas.js --write && node tooling/precompile-schemas.js --write && node tooling/generate-types.js --no-template-literals --write && node tooling/generate-internal-serializables.js --write",
56
57
  "fix:serializables": "node tooling/generate-internal-serializables.js --write",
57
58
  "build:examples": "cd examples && node buildAll.js",
58
- "benchmark": "node --max-old-space-size=6144 --experimental-vm-modules --trace-deprecation --hash-seed=1 --random-seed=1 --no-opt --predictable --predictable-gc-schedule --interpreted-frames-native-stack --allow-natives-syntax --expose-gc --no-concurrent-sweeping ./test/BenchmarkTestCases.benchmark.mjs",
59
+ "benchmark": "node --max-old-space-size=6144 --experimental-vm-modules --trace-deprecation --hash-seed=1 --random-seed=1 --no-opt --predictable --predictable-gc-schedule --interpreted-frames-native-stack --allow-natives-syntax --expose-gc --no-concurrent-sweeping --no-minor-gc-task --no-maglev ./test/BenchmarkTestCases.benchmark.mjs",
59
60
  "playground": "webpack serve --config test/hotPlayground/webpack.config.js",
60
61
  "test:invariants": "yarn test:invariants:css && yarn test:invariants:html && yarn test:invariants:js && yarn test:invariants:xml",
61
62
  "test:invariants:css": "node tooling/compare-css-tools.js --invariants",
@@ -74,15 +75,15 @@
74
75
  "find-deep-imports": "node tooling/find-deep-webpack-imports.js",
75
76
  "find-deep-imports:check": "node tooling/find-deep-webpack-imports.js --check",
76
77
  "measure:color-agreement": "node tooling/measure-color-agreement.js",
78
+ "hash:css-outputs": "node tooling/hash-css-outputs.js",
77
79
  "setup:browsers": "node tooling/install-browsers.js",
78
- "setup:webkit": "node node_modules/playwright-core/cli.js install webkit",
79
80
  "pretest": "yarn lint",
80
81
  "test": "yarn test:base",
81
82
  "test:base": "node --expose-gc --max-old-space-size=4096 --experimental-vm-modules --trace-deprecation node_modules/jest-cli/bin/jest --workerIdleMemoryLimit=512MB --logHeapUsage",
82
83
  "test:basic": "yarn test:base --testMatch \"<rootDir>/test/*.basictest.js\"",
83
84
  "test:basic:deno": "yarn test:base:deno --testMatch \"<rootDir>/test/*.basictest.js\"",
84
85
  "test:basic:bun": "yarn test:base:bun --testMatch \"<rootDir>/test/*.basictest.js\"",
85
- "test:unit": "yarn test:base --testMatch \"<rootDir>/test/unitCases/*.unittest.js\"",
86
+ "test:unit": "yarn test:base --testMatch \"<rootDir>/test/unitCases/**/*.unittest.js\"",
86
87
  "test:integration": "yarn test:base --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\"",
87
88
  "test:integration:a": "yarn test:base --testMatch \"<rootDir>/test/*.{basictest,test}.js\"",
88
89
  "test:integration:b": "yarn test:base --testMatch \"<rootDir>/test/*.longtest.js\"",
@@ -94,9 +95,9 @@
94
95
  "test:syntax-equivalence": "yarn test:base --testMatch \"<rootDir>/test/specCases/syntaxEquivalence.spectest.js\"",
95
96
  "test:css-parsing": "yarn test:base --testMatch \"<rootDir>/test/specCases/cssParsing-webpack.spectest.js\"",
96
97
  "test:xmlconf": "yarn test:base --testMatch \"<rootDir>/test/specCases/xmlconf.spectest.js\"",
97
- "test:deno": "yarn test:base:deno --reporters default --reporters \"<rootDir>/test/harness/runtimeCrashReporter.js\" --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\" \"<rootDir>/test/unitCases/*.unittest.js\" --testPathIgnorePatterns \"/node_modules/\" \"(ProfilingPlugin[.]unittest|WebpackDevServer)\"",
98
+ "test:deno": "yarn test:base:deno --reporters default --reporters \"<rootDir>/test/harness/runtimeCrashReporter.js\" --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\" \"<rootDir>/test/unitCases/**/*.unittest.js\" --testPathIgnorePatterns \"/node_modules/\" \"(ProfilingPlugin[.]unittest|WebpackDevServer)\"",
98
99
  "test:base:deno": "deno --allow-read --allow-env --allow-sys --allow-ffi --allow-write --allow-run --allow-net --import-map=test/harness/runtimes/deno-import-map.json --v8-flags='--max-old-space-size=4096' ./node_modules/jest-cli/bin/jest.js --workerIdleMemoryLimit=512MB --logHeapUsage",
99
- "test:bun": "yarn test:base:bun --reporters default --reporters \"<rootDir>/test/harness/runtimeCrashReporter.js\" --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\" \"<rootDir>/test/unitCases/*.unittest.js\" --testPathIgnorePatterns \"/node_modules/\" \"(ProfilingPlugin[.]unittest|WebpackDevServer)\"",
100
+ "test:bun": "yarn test:base:bun --reporters default --reporters \"<rootDir>/test/harness/runtimeCrashReporter.js\" --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\" \"<rootDir>/test/unitCases/**/*.unittest.js\" --testPathIgnorePatterns \"/node_modules/\" \"(ProfilingPlugin[.]unittest|WebpackDevServer)\"",
100
101
  "test:base:bun": "NODE_EXTRA_CA_CERTS=./test/hotCases/lazy-compilation/https/cert.pem bun --bun --smol --preload ./test/harness/runtimes/bun-preload.js ./node_modules/jest-cli/bin/jest.js --workerThreads --workerIdleMemoryLimit=2048MB --logHeapUsage",
101
102
  "test:update-snapshots": "yarn test:base -u",
102
103
  "test:size": "node --max-old-space-size=4096 ./test/CodeSizeTestCases.size.js",
@@ -108,7 +109,7 @@
108
109
  "cover": "yarn cover:all && yarn report:cover",
109
110
  "cover:base": "node --expose-gc --max-old-space-size=4096 --experimental-vm-modules node_modules/jest-cli/bin/jest --workerIdleMemoryLimit=512MB --logHeapUsage",
110
111
  "cover:all": "yarn cover:base --coverage",
111
- "cover:unit": "yarn cover:base --testMatch \"<rootDir>/test/unitCases/*.unittest.js\" --coverage",
112
+ "cover:unit": "yarn cover:base --testMatch \"<rootDir>/test/unitCases/**/*.unittest.js\" --coverage",
112
113
  "cover:basic": "yarn cover:base --testMatch \"<rootDir>/test/*.basictest.js\" --coverage",
113
114
  "cover:integration": "yarn cover:base --testMatch \"<rootDir>/test/*.{basictest,longtest,test}.js\" --coverage",
114
115
  "cover:integration:a": "yarn cover:base --testMatch \"<rootDir>/test/*.{basictest,test}.js\" --coverage",
@@ -117,9 +118,11 @@
117
118
  "cover:html5lib": "yarn cover:base --testMatch \"<rootDir>/test/specCases/html5lib.spectest.js\" --coverage",
118
119
  "cover:syntax-equivalence": "yarn cover:base --testMatch \"<rootDir>/test/specCases/syntaxEquivalence.spectest.js\" --coverage",
119
120
  "cover:css-parsing": "yarn cover:base --testMatch \"<rootDir>/test/specCases/cssParsing-webpack.spectest.js\" --coverage",
120
- "cover:minify": "yarn cover:base --testMatch \"<rootDir>/test/specCases/minify-corpora.spectest.js\" \"<rootDir>/test/specCases/js-fuzz.spectest.js\" --coverage",
121
+ "cover:minify": "yarn cover:base --testMatch \"<rootDir>/test/specCases/minify-corpora.spectest.js\" --coverage",
122
+ "cover:minify-fuzz": "yarn cover:base --testMatch \"<rootDir>/test/specCases/js-fuzz.spectest.js\" --coverage",
121
123
  "cover:test262-parser": "yarn cover:base --testMatch \"<rootDir>/test/specCases/test262-parser.spectest.js\" --coverage",
122
- "cover:xmlconf": "yarn cover:base --testMatch \"<rootDir>/test/specCases/xmlconf.spectest.js\" --coverage"
124
+ "cover:xmlconf": "yarn cover:base --testMatch \"<rootDir>/test/specCases/xmlconf.spectest.js\" --coverage",
125
+ "cover:spec-css-html-xml": "yarn cover:base --testMatch \"<rootDir>/test/specCases/cssParsing-webpack.spectest.js\" \"<rootDir>/test/specCases/html5lib.spectest.js\" \"<rootDir>/test/specCases/xmlconf.spectest.js\" --coverage"
123
126
  },
124
127
  "lint-staged": {
125
128
  "*.{js,cjs,mjs}": [
@@ -144,9 +147,9 @@
144
147
  "graceful-fs": "^4.2.11",
145
148
  "mime-db": "^1.54.0",
146
149
  "minimizer-webpack-plugin": "^5.13.0",
147
- "schema-utils": "^4.5.0",
150
+ "schema-utils": "^4.8.1",
148
151
  "tapable": "^2.3.0",
149
- "watchpack": "^2.6.1",
152
+ "watchpack": "^2.6.3",
150
153
  "webpack-sources": "^3.6.0"
151
154
  },
152
155
  "devDependencies": {
@@ -154,9 +157,8 @@
154
157
  "@babel/preset-react": "^8.0.1",
155
158
  "@changesets/cli": "^3.0.1",
156
159
  "@changesets/get-github-info": "^1.0.1",
157
- "@codspeed/core": "^5.5.0",
160
+ "@codspeed/core": "^6.1.0",
158
161
  "@mdn/browser-compat-data": "^8.1.4",
159
- "@puppeteer/browsers": "^3.2.2",
160
162
  "@types/convert-source-map": "^2.0.3",
161
163
  "@types/graceful-fs": "^4.1.9",
162
164
  "@types/jest": "^30.0.0",
@@ -168,14 +170,12 @@
168
170
  "@webref/elements": "^2.8.0",
169
171
  "@webref/idl": "^3.83.1",
170
172
  "acorn": "^8.16.0",
171
- "ajv": "^8.20.0",
172
173
  "assemblyscript": "^0.28.18",
173
174
  "babel-loader": "^10.0.0",
174
175
  "bundle-loader": "^0.5.6",
175
176
  "coffee-loader": "^5.0.0",
176
177
  "coffeescript": "^2.5.1",
177
178
  "color-name": "^2.1.1",
178
- "commondir": "^1.0.1",
179
179
  "core-js": "^3.47.0",
180
180
  "cspell": "^10.0.1",
181
181
  "css-loader": "^7.1.2",
@@ -217,15 +217,14 @@
217
217
  "node-gyp": "^13.0.0",
218
218
  "nyc": "^18.0.0",
219
219
  "open-cli": "^9.0.0",
220
- "oxc-minify": "^0.153.0",
221
- "oxc-parser": "^0.153.0",
220
+ "oxc-minify": "^0.154.0",
221
+ "oxc-parser": "^0.154.0",
222
222
  "pkg-pr-new": "^0.0.91",
223
223
  "playwright-core": "^1.63.0",
224
224
  "prettier": "^3.8.2",
225
225
  "prettier-2": "npm:prettier@^2",
226
226
  "pretty-format": "^30.0.5",
227
227
  "pug": "^3.0.3",
228
- "puppeteer-core": "^25.3.0",
229
228
  "raw-loader": "^4.0.1",
230
229
  "react": "^19.2.7",
231
230
  "react-dom": "^19.2.7",