webpack 5.95.0 → 5.96.1

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 (145) hide show
  1. package/README.md +1 -1
  2. package/lib/AsyncDependenciesBlock.js +1 -1
  3. package/lib/BannerPlugin.js +2 -1
  4. package/lib/Chunk.js +30 -0
  5. package/lib/ChunkGraph.js +11 -6
  6. package/lib/ChunkGroup.js +2 -2
  7. package/lib/CleanPlugin.js +4 -5
  8. package/lib/CodeGenerationResults.js +6 -5
  9. package/lib/Compilation.js +71 -48
  10. package/lib/Compiler.js +7 -5
  11. package/lib/ConcatenationScope.js +7 -20
  12. package/lib/ContextModule.js +7 -8
  13. package/lib/CssModule.js +25 -21
  14. package/lib/DefinePlugin.js +14 -8
  15. package/lib/DelegatedModule.js +3 -3
  16. package/lib/DllModule.js +4 -4
  17. package/lib/DynamicEntryPlugin.js +29 -22
  18. package/lib/EvalDevToolModulePlugin.js +5 -2
  19. package/lib/EvalSourceMapDevToolPlugin.js +5 -2
  20. package/lib/ExternalModule.js +40 -7
  21. package/lib/ExternalModuleFactoryPlugin.js +33 -9
  22. package/lib/FileSystemInfo.js +12 -8
  23. package/lib/Generator.js +5 -4
  24. package/lib/HotModuleReplacementPlugin.js +8 -6
  25. package/lib/IgnorePlugin.js +19 -1
  26. package/lib/LoaderOptionsPlugin.js +3 -1
  27. package/lib/Module.js +9 -8
  28. package/lib/ModuleSourceTypesConstants.js +100 -0
  29. package/lib/NormalModule.js +27 -17
  30. package/lib/NormalModuleFactory.js +38 -22
  31. package/lib/OptionsApply.js +12 -1
  32. package/lib/ProgressPlugin.js +50 -10
  33. package/lib/RawModule.js +3 -4
  34. package/lib/RuntimeModule.js +3 -4
  35. package/lib/RuntimePlugin.js +11 -4
  36. package/lib/RuntimeTemplate.js +13 -42
  37. package/lib/SourceMapDevToolPlugin.js +10 -7
  38. package/lib/Watching.js +2 -2
  39. package/lib/WebpackOptionsApply.js +42 -21
  40. package/lib/asset/AssetGenerator.js +347 -194
  41. package/lib/asset/AssetModulesPlugin.js +2 -1
  42. package/lib/asset/AssetSourceGenerator.js +82 -27
  43. package/lib/asset/RawDataUrlModule.js +5 -4
  44. package/lib/buildChunkGraph.js +2 -2
  45. package/lib/cache/PackFileCacheStrategy.js +69 -31
  46. package/lib/cache/ResolverCachePlugin.js +248 -173
  47. package/lib/config/defaults.js +134 -126
  48. package/lib/container/ContainerEntryModule.js +3 -4
  49. package/lib/container/ContainerPlugin.js +8 -0
  50. package/lib/container/FallbackModule.js +2 -2
  51. package/lib/container/HoistContainerReferencesPlugin.js +250 -0
  52. package/lib/container/ModuleFederationPlugin.js +38 -1
  53. package/lib/container/RemoteModule.js +4 -2
  54. package/lib/container/RemoteRuntimeModule.js +4 -2
  55. package/lib/css/CssExportsGenerator.js +16 -12
  56. package/lib/css/CssGenerator.js +22 -16
  57. package/lib/css/CssLoadingRuntimeModule.js +7 -6
  58. package/lib/css/CssModulesPlugin.js +122 -77
  59. package/lib/css/CssParser.js +655 -526
  60. package/lib/css/walkCssTokens.js +1168 -338
  61. package/lib/debug/ProfilingPlugin.js +5 -0
  62. package/lib/dependencies/CommonJsExportsParserPlugin.js +5 -2
  63. package/lib/dependencies/CommonJsImportsParserPlugin.js +3 -6
  64. package/lib/dependencies/CssExportDependency.js +3 -3
  65. package/lib/dependencies/CssLocalIdentifierDependency.js +26 -17
  66. package/lib/dependencies/CssUrlDependency.js +33 -3
  67. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -3
  68. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +39 -14
  69. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +15 -82
  70. package/lib/dependencies/HarmonyImportSpecifierDependency.js +5 -2
  71. package/lib/dependencies/ImportParserPlugin.js +9 -7
  72. package/lib/dependencies/LoaderPlugin.js +19 -0
  73. package/lib/dependencies/SystemPlugin.js +2 -1
  74. package/lib/dependencies/URLPlugin.js +7 -1
  75. package/lib/dependencies/WorkerPlugin.js +1 -1
  76. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +4 -2
  77. package/lib/hmr/HotModuleReplacement.runtime.js +1 -0
  78. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +1 -0
  79. package/lib/hmr/LazyCompilationPlugin.js +16 -4
  80. package/lib/hmr/lazyCompilationBackend.js +1 -7
  81. package/lib/index.js +37 -7
  82. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  83. package/lib/javascript/JavascriptGenerator.js +8 -8
  84. package/lib/javascript/JavascriptModulesPlugin.js +126 -73
  85. package/lib/javascript/JavascriptParser.js +338 -117
  86. package/lib/json/JsonGenerator.js +5 -5
  87. package/lib/library/EnableLibraryPlugin.js +2 -2
  88. package/lib/library/ExportPropertyLibraryPlugin.js +1 -1
  89. package/lib/library/UmdLibraryPlugin.js +16 -8
  90. package/lib/logging/Logger.js +11 -11
  91. package/lib/logging/createConsoleLogger.js +14 -14
  92. package/lib/logging/truncateArgs.js +1 -1
  93. package/lib/node/NodeWatchFileSystem.js +3 -1
  94. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +20 -18
  95. package/lib/node/ReadFileCompileWasmPlugin.js +1 -2
  96. package/lib/node/nodeConsole.js +11 -8
  97. package/lib/optimize/AggressiveSplittingPlugin.js +21 -7
  98. package/lib/optimize/ConcatenatedModule.js +43 -145
  99. package/lib/optimize/FlagIncludedChunksPlugin.js +6 -0
  100. package/lib/optimize/InnerGraphPlugin.js +57 -16
  101. package/lib/optimize/LimitChunkCountPlugin.js +2 -4
  102. package/lib/optimize/ModuleConcatenationPlugin.js +4 -2
  103. package/lib/optimize/RealContentHashPlugin.js +1 -1
  104. package/lib/optimize/SideEffectsFlagPlugin.js +6 -3
  105. package/lib/rules/RuleSetCompiler.js +2 -2
  106. package/lib/runtime/GetChunkFilenameRuntimeModule.js +2 -2
  107. package/lib/schemes/DataUriPlugin.js +1 -1
  108. package/lib/serialization/BinaryMiddleware.js +32 -19
  109. package/lib/serialization/ObjectMiddleware.js +23 -9
  110. package/lib/serialization/SerializerMiddleware.js +3 -2
  111. package/lib/serialization/types.js +2 -2
  112. package/lib/sharing/ConsumeSharedModule.js +2 -3
  113. package/lib/sharing/ConsumeSharedRuntimeModule.js +3 -1
  114. package/lib/sharing/ProvideSharedModule.js +2 -3
  115. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -20
  116. package/lib/stats/StatsFactory.js +12 -12
  117. package/lib/stats/StatsPrinter.js +7 -7
  118. package/lib/util/AsyncQueue.js +17 -1
  119. package/lib/util/IterableHelpers.js +1 -1
  120. package/lib/util/SetHelpers.js +1 -1
  121. package/lib/util/cleverMerge.js +48 -24
  122. package/lib/util/concatenate.js +227 -0
  123. package/lib/util/create-schema-validation.js +22 -9
  124. package/lib/util/deprecation.js +86 -28
  125. package/lib/util/fs.js +9 -9
  126. package/lib/util/hash/wasm-hash.js +12 -1
  127. package/lib/util/magicComment.js +21 -0
  128. package/lib/util/makeSerializable.js +24 -1
  129. package/lib/util/memoize.js +2 -1
  130. package/lib/util/runtime.js +4 -1
  131. package/lib/util/semver.js +130 -23
  132. package/lib/wasm/EnableWasmLoadingPlugin.js +2 -2
  133. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  134. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +5 -5
  135. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -5
  136. package/lib/wasm-sync/WebAssemblyGenerator.js +8 -9
  137. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -5
  138. package/lib/web/FetchCompileAsyncWasmPlugin.js +1 -2
  139. package/lib/web/FetchCompileWasmPlugin.js +1 -2
  140. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  141. package/package.json +18 -19
  142. package/schemas/WebpackOptions.check.js +1 -1
  143. package/schemas/WebpackOptions.json +8 -2
  144. package/types.d.ts +801 -259
  145. package/lib/util/mergeScope.js +0 -76
@@ -56,6 +56,8 @@ const DefaultStatsPrinterPlugin = require("./stats/DefaultStatsPrinterPlugin");
56
56
  const { cleverMerge } = require("./util/cleverMerge");
57
57
 
58
58
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
59
+ /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
60
+ /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
59
61
  /** @typedef {import("./Compiler")} Compiler */
60
62
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
61
63
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
@@ -123,16 +125,16 @@ class WebpackOptionsApply extends OptionsApply {
123
125
  const ExternalsPlugin = require("./ExternalsPlugin");
124
126
  new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
125
127
  if (dependencyType === "url") {
126
- if (/^(\/\/|https?:\/\/|#)/.test(request))
128
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
127
129
  return callback(null, `asset ${request}`);
128
130
  } else if (options.experiments.css && dependencyType === "css-import") {
129
- if (/^(\/\/|https?:\/\/|#)/.test(request))
131
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
130
132
  return callback(null, `css-import ${request}`);
131
133
  } else if (
132
134
  options.experiments.css &&
133
- /^(\/\/|https?:\/\/|std:)/.test(request)
135
+ /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
134
136
  ) {
135
- if (/^\.css(\?|$)/.test(request))
137
+ if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
136
138
  return callback(null, `css-import ${request}`);
137
139
  return callback(null, `import ${request}`);
138
140
  }
@@ -143,13 +145,18 @@ class WebpackOptionsApply extends OptionsApply {
143
145
  const ExternalsPlugin = require("./ExternalsPlugin");
144
146
  new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
145
147
  if (dependencyType === "url") {
146
- if (/^(\/\/|https?:\/\/|#)/.test(request))
148
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
147
149
  return callback(null, `asset ${request}`);
148
150
  } else if (options.experiments.css && dependencyType === "css-import") {
149
- if (/^(\/\/|https?:\/\/|#)/.test(request))
151
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
150
152
  return callback(null, `css-import ${request}`);
151
- } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
152
- if (options.experiments.css && /^\.css((\?)|$)/.test(request))
153
+ } else if (
154
+ /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
155
+ ) {
156
+ if (
157
+ options.experiments.css &&
158
+ /^\.css((\?)|$)/.test(/** @type {string} */ (request))
159
+ )
153
160
  return callback(null, `css-import ${request}`);
154
161
  return callback(null, `module ${request}`);
155
162
  }
@@ -160,13 +167,15 @@ class WebpackOptionsApply extends OptionsApply {
160
167
  const ExternalsPlugin = require("./ExternalsPlugin");
161
168
  new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
162
169
  if (dependencyType === "url") {
163
- if (/^(\/\/|https?:\/\/|#)/.test(request))
170
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
164
171
  return callback(null, `asset ${request}`);
165
172
  } else if (dependencyType === "css-import") {
166
- if (/^(\/\/|https?:\/\/|#)/.test(request))
173
+ if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
167
174
  return callback(null, `css-import ${request}`);
168
- } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
169
- if (/^\.css(\?|$)/.test(request))
175
+ } else if (
176
+ /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
177
+ ) {
178
+ if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
170
179
  return callback(null, `css-import ${request}`);
171
180
  return callback(null, `module ${request}`);
172
181
  }
@@ -488,8 +497,12 @@ class WebpackOptionsApply extends OptionsApply {
488
497
  if (options.optimization.realContentHash) {
489
498
  const RealContentHashPlugin = require("./optimize/RealContentHashPlugin");
490
499
  new RealContentHashPlugin({
491
- hashFunction: options.output.hashFunction,
492
- hashDigest: options.output.hashDigest
500
+ hashFunction:
501
+ /** @type {NonNullable<WebpackOptions["output"]["hashFunction"]>} */
502
+ (options.output.hashFunction),
503
+ hashDigest:
504
+ /** @type {NonNullable<WebpackOptions["output"]["hashDigest"]>} */
505
+ (options.output.hashDigest)
493
506
  }).apply(compiler);
494
507
  }
495
508
  if (options.optimization.checkWasmTypes) {
@@ -587,9 +600,12 @@ class WebpackOptionsApply extends OptionsApply {
587
600
  }).apply(compiler);
588
601
  }
589
602
  if (options.optimization.minimize) {
590
- for (const minimizer of options.optimization.minimizer) {
603
+ for (const minimizer of /** @type {(WebpackPluginInstance | WebpackPluginFunction | "...")[]} */ (
604
+ options.optimization.minimizer
605
+ )) {
591
606
  if (typeof minimizer === "function") {
592
- minimizer.call(compiler, compiler);
607
+ /** @type {WebpackPluginFunction} */
608
+ (minimizer).call(compiler, compiler);
593
609
  } else if (minimizer !== "..." && minimizer) {
594
610
  minimizer.apply(compiler);
595
611
  }
@@ -661,7 +677,9 @@ class WebpackOptionsApply extends OptionsApply {
661
677
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
662
678
  const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
663
679
  new MemoryWithGcCachePlugin({
664
- maxGenerations: cacheOptions.maxMemoryGenerations
680
+ maxGenerations:
681
+ /** @type {number} */
682
+ (cacheOptions.maxMemoryGenerations)
665
683
  }).apply(compiler);
666
684
  }
667
685
  if (cacheOptions.memoryCacheUnaffected) {
@@ -686,7 +704,7 @@ class WebpackOptionsApply extends OptionsApply {
686
704
  cacheLocation:
687
705
  /** @type {string} */
688
706
  (cacheOptions.cacheLocation),
689
- version: cacheOptions.version,
707
+ version: /** @type {string} */ (cacheOptions.version),
690
708
  logger: compiler.getInfrastructureLogger(
691
709
  "webpack.cache.PackFileCacheStrategy"
692
710
  ),
@@ -697,9 +715,12 @@ class WebpackOptionsApply extends OptionsApply {
697
715
  compression: cacheOptions.compression,
698
716
  readonly: cacheOptions.readonly
699
717
  }),
700
- cacheOptions.idleTimeout,
701
- cacheOptions.idleTimeoutForInitialStore,
702
- cacheOptions.idleTimeoutAfterLargeChanges
718
+ /** @type {number} */
719
+ (cacheOptions.idleTimeout),
720
+ /** @type {number} */
721
+ (cacheOptions.idleTimeoutForInitialStore),
722
+ /** @type {number} */
723
+ (cacheOptions.idleTimeoutAfterLargeChanges)
703
724
  ).apply(compiler);
704
725
  break;
705
726
  }