webpack 5.99.8 → 5.100.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 (314) hide show
  1. package/README.md +0 -3
  2. package/bin/webpack.js +8 -2
  3. package/hot/log.js +15 -15
  4. package/hot/poll.js +1 -0
  5. package/lib/APIPlugin.js +3 -3
  6. package/lib/AbstractMethodError.js +1 -0
  7. package/lib/AutomaticPrefetchPlugin.js +1 -0
  8. package/lib/BannerPlugin.js +1 -1
  9. package/lib/CacheFacade.js +2 -1
  10. package/lib/CaseSensitiveModulesWarning.js +4 -4
  11. package/lib/Chunk.js +6 -6
  12. package/lib/ChunkGraph.js +37 -32
  13. package/lib/ChunkGroup.js +17 -10
  14. package/lib/ChunkTemplate.js +1 -1
  15. package/lib/CleanPlugin.js +94 -17
  16. package/lib/CodeGenerationResults.js +1 -1
  17. package/lib/CompatibilityPlugin.js +5 -2
  18. package/lib/Compilation.js +77 -71
  19. package/lib/Compiler.js +46 -16
  20. package/lib/ConcatenationScope.js +15 -6
  21. package/lib/ConstPlugin.js +65 -45
  22. package/lib/ContextModule.js +16 -12
  23. package/lib/ContextModuleFactory.js +4 -3
  24. package/lib/ContextReplacementPlugin.js +4 -2
  25. package/lib/CssModule.js +2 -3
  26. package/lib/DefinePlugin.js +111 -3
  27. package/lib/DelegatedModuleFactoryPlugin.js +18 -18
  28. package/lib/Dependency.js +16 -12
  29. package/lib/DependencyTemplate.js +1 -0
  30. package/lib/DllEntryPlugin.js +3 -1
  31. package/lib/DllPlugin.js +4 -3
  32. package/lib/DllReferencePlugin.js +2 -2
  33. package/lib/DynamicEntryPlugin.js +1 -1
  34. package/lib/EntryOptionPlugin.js +5 -0
  35. package/lib/ErrorHelpers.js +4 -4
  36. package/lib/EvalDevToolModulePlugin.js +3 -3
  37. package/lib/EvalSourceMapDevToolPlugin.js +7 -7
  38. package/lib/ExportsInfo.js +48 -39
  39. package/lib/ExternalModule.js +15 -11
  40. package/lib/ExternalModuleFactoryPlugin.js +5 -2
  41. package/lib/FileSystemInfo.js +51 -38
  42. package/lib/FlagDependencyExportsPlugin.js +14 -7
  43. package/lib/FlagDependencyUsagePlugin.js +1 -1
  44. package/lib/Generator.js +14 -1
  45. package/lib/HookWebpackError.js +1 -0
  46. package/lib/HotModuleReplacementPlugin.js +77 -50
  47. package/lib/IgnorePlugin.js +1 -1
  48. package/lib/InvalidDependenciesModuleWarning.js +1 -1
  49. package/lib/JavascriptMetaInfoPlugin.js +0 -1
  50. package/lib/LibManifestPlugin.js +4 -2
  51. package/lib/LoaderOptionsPlugin.js +6 -4
  52. package/lib/MainTemplate.js +2 -2
  53. package/lib/Module.js +21 -6
  54. package/lib/ModuleFactory.js +1 -0
  55. package/lib/ModuleGraph.js +24 -2
  56. package/lib/ModuleGraphConnection.js +5 -5
  57. package/lib/ModuleInfoHeaderPlugin.js +2 -1
  58. package/lib/ModuleParseError.js +1 -0
  59. package/lib/ModuleSourceTypesConstants.js +12 -12
  60. package/lib/ModuleTemplate.js +1 -1
  61. package/lib/ModuleTypeConstants.js +21 -21
  62. package/lib/MultiCompiler.js +6 -6
  63. package/lib/NormalModule.js +61 -56
  64. package/lib/NormalModuleFactory.js +52 -37
  65. package/lib/NormalModuleReplacementPlugin.js +1 -1
  66. package/lib/NullFactory.js +1 -0
  67. package/lib/OptimizationStages.js +1 -1
  68. package/lib/Parser.js +1 -0
  69. package/lib/ProgressPlugin.js +12 -5
  70. package/lib/ProvidePlugin.js +5 -1
  71. package/lib/RecordIdsPlugin.js +3 -3
  72. package/lib/RuntimeGlobals.js +175 -155
  73. package/lib/RuntimeModule.js +1 -0
  74. package/lib/RuntimePlugin.js +34 -8
  75. package/lib/RuntimeTemplate.js +111 -11
  76. package/lib/SourceMapDevToolModuleOptionsPlugin.js +15 -25
  77. package/lib/SourceMapDevToolPlugin.js +19 -17
  78. package/lib/Template.js +2 -2
  79. package/lib/TemplatedPathPlugin.js +1 -1
  80. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  81. package/lib/WatchIgnorePlugin.js +4 -3
  82. package/lib/WebpackIsIncludedPlugin.js +2 -1
  83. package/lib/WebpackOptionsApply.js +115 -27
  84. package/lib/asset/AssetGenerator.js +26 -21
  85. package/lib/asset/AssetModulesPlugin.js +19 -17
  86. package/lib/asset/AssetSourceGenerator.js +11 -9
  87. package/lib/asset/RawDataUrlModule.js +4 -2
  88. package/lib/async-modules/AwaitDependenciesInitFragment.js +1 -1
  89. package/lib/buildChunkGraph.js +6 -3
  90. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  91. package/lib/cache/IdleFileCachePlugin.js +7 -4
  92. package/lib/cache/MemoryCachePlugin.js +1 -0
  93. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  94. package/lib/cache/PackFileCacheStrategy.js +26 -20
  95. package/lib/cache/ResolverCachePlugin.js +16 -8
  96. package/lib/cli.js +15 -10
  97. package/lib/config/browserslistTargetHandler.js +3 -3
  98. package/lib/config/defaults.js +25 -17
  99. package/lib/config/normalization.js +2 -1
  100. package/lib/config/target.js +6 -5
  101. package/lib/container/ContainerPlugin.js +1 -1
  102. package/lib/container/ContainerReferencePlugin.js +1 -1
  103. package/lib/container/FallbackModule.js +2 -1
  104. package/lib/container/HoistContainerReferencesPlugin.js +1 -1
  105. package/lib/container/ModuleFederationPlugin.js +2 -2
  106. package/lib/container/RemoteModule.js +1 -1
  107. package/lib/css/CssGenerator.js +9 -6
  108. package/lib/css/CssModulesPlugin.js +44 -31
  109. package/lib/css/CssParser.js +6 -4
  110. package/lib/css/walkCssTokens.js +33 -37
  111. package/lib/debug/ProfilingPlugin.js +6 -6
  112. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -8
  113. package/lib/dependencies/AMDPlugin.js +12 -8
  114. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -26
  115. package/lib/dependencies/CachedConstDependency.js +1 -5
  116. package/lib/dependencies/CommonJsExportRequireDependency.js +6 -4
  117. package/lib/dependencies/CommonJsExportsParserPlugin.js +22 -25
  118. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -9
  119. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -114
  120. package/lib/dependencies/CommonJsPlugin.js +15 -16
  121. package/lib/dependencies/ContextDependencyHelpers.js +2 -1
  122. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  123. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  124. package/lib/dependencies/CssIcssExportDependency.js +1 -1
  125. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -2
  126. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  127. package/lib/dependencies/CssUrlDependency.js +1 -1
  128. package/lib/dependencies/DynamicExports.js +9 -9
  129. package/lib/dependencies/ExportsInfoDependency.js +1 -1
  130. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +122 -101
  131. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  132. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +95 -19
  133. package/lib/dependencies/HarmonyExportInitFragment.js +1 -1
  134. package/lib/dependencies/HarmonyImportDependency.js +11 -5
  135. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +238 -162
  136. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -1
  137. package/lib/dependencies/HarmonyImportSpecifierDependency.js +20 -9
  138. package/lib/dependencies/HarmonyModulesPlugin.js +23 -12
  139. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -0
  140. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  141. package/lib/dependencies/ImportMetaPlugin.js +2 -2
  142. package/lib/dependencies/ImportParserPlugin.js +40 -9
  143. package/lib/dependencies/ImportPlugin.js +3 -1
  144. package/lib/dependencies/LoaderPlugin.js +1 -0
  145. package/lib/dependencies/ModuleDependency.js +1 -1
  146. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  147. package/lib/dependencies/RequireContextPlugin.js +3 -1
  148. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +3 -0
  149. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  150. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  151. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  152. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  153. package/lib/dependencies/SystemPlugin.js +1 -1
  154. package/lib/dependencies/URLContextDependency.js +65 -0
  155. package/lib/dependencies/URLDependency.js +1 -1
  156. package/lib/dependencies/URLPlugin.js +17 -157
  157. package/lib/dependencies/WorkerPlugin.js +23 -10
  158. package/lib/dependencies/processExportInfo.js +2 -1
  159. package/lib/esm/ModuleChunkFormatPlugin.js +269 -185
  160. package/lib/esm/ModuleChunkLoadingPlugin.js +39 -1
  161. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +73 -6
  162. package/lib/hmr/HotModuleReplacement.runtime.js +0 -1
  163. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  164. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  165. package/lib/hmr/LazyCompilationPlugin.js +4 -2
  166. package/lib/hmr/lazyCompilationBackend.js +4 -2
  167. package/lib/ids/ChunkModuleIdRangePlugin.js +6 -3
  168. package/lib/ids/DeterministicChunkIdsPlugin.js +30 -35
  169. package/lib/ids/DeterministicModuleIdsPlugin.js +4 -3
  170. package/lib/ids/HashedModuleIdsPlugin.js +5 -4
  171. package/lib/ids/IdHelpers.js +21 -17
  172. package/lib/ids/NamedChunkIdsPlugin.js +5 -5
  173. package/lib/ids/NamedModuleIdsPlugin.js +4 -4
  174. package/lib/ids/NaturalChunkIdsPlugin.js +2 -1
  175. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  176. package/lib/ids/OccurrenceChunkIdsPlugin.js +3 -2
  177. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  178. package/lib/ids/SyncModuleIdsPlugin.js +1 -1
  179. package/lib/index.js +13 -3
  180. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +113 -119
  181. package/lib/javascript/BasicEvaluatedExpression.js +2 -1
  182. package/lib/javascript/ChunkHelpers.js +1 -0
  183. package/lib/javascript/CommonJsChunkFormatPlugin.js +121 -136
  184. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -3
  185. package/lib/javascript/JavascriptGenerator.js +14 -2
  186. package/lib/javascript/JavascriptModulesPlugin.js +68 -27
  187. package/lib/javascript/JavascriptParser.js +136 -81
  188. package/lib/javascript/JavascriptParserHelpers.js +41 -41
  189. package/lib/javascript/StartupHelpers.js +17 -17
  190. package/lib/json/JsonGenerator.js +4 -2
  191. package/lib/json/JsonModulesPlugin.js +2 -2
  192. package/lib/json/JsonParser.js +1 -1
  193. package/lib/library/AbstractLibraryPlugin.js +6 -2
  194. package/lib/library/AssignLibraryPlugin.js +21 -6
  195. package/lib/library/EnableLibraryPlugin.js +23 -3
  196. package/lib/library/ModuleLibraryPlugin.js +4 -1
  197. package/lib/library/UmdLibraryPlugin.js +15 -6
  198. package/lib/logging/createConsoleLogger.js +3 -3
  199. package/lib/logging/runtime.js +9 -9
  200. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +4 -22
  201. package/lib/node/RequireChunkLoadingRuntimeModule.js +4 -22
  202. package/lib/node/nodeConsole.js +4 -2
  203. package/lib/optimize/AggressiveMergingPlugin.js +45 -46
  204. package/lib/optimize/AggressiveSplittingPlugin.js +13 -12
  205. package/lib/optimize/ConcatenatedModule.js +227 -57
  206. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  207. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -1
  208. package/lib/optimize/InnerGraph.js +115 -112
  209. package/lib/optimize/InnerGraphPlugin.js +2 -2
  210. package/lib/optimize/LimitChunkCountPlugin.js +4 -2
  211. package/lib/optimize/MangleExportsPlugin.js +4 -3
  212. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  213. package/lib/optimize/MinChunkSizePlugin.js +6 -3
  214. package/lib/optimize/ModuleConcatenationPlugin.js +31 -22
  215. package/lib/optimize/RealContentHashPlugin.js +26 -20
  216. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  217. package/lib/optimize/RemoveParentModulesPlugin.js +1 -0
  218. package/lib/optimize/SideEffectsFlagPlugin.js +6 -3
  219. package/lib/optimize/SplitChunksPlugin.js +16 -13
  220. package/lib/rules/BasicEffectRulePlugin.js +4 -2
  221. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  222. package/lib/rules/ObjectMatcherRulePlugin.js +3 -1
  223. package/lib/rules/RuleSetCompiler.js +7 -4
  224. package/lib/rules/UseEffectRulePlugin.js +3 -1
  225. package/lib/runtime/AsyncModuleRuntimeModule.js +64 -9
  226. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  227. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +214 -0
  228. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  229. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +8 -7
  230. package/lib/schemes/DataUriPlugin.js +3 -1
  231. package/lib/schemes/FileUriPlugin.js +1 -1
  232. package/lib/schemes/HttpUriPlugin.js +27 -19
  233. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  234. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  235. package/lib/serialization/BinaryMiddleware.js +5 -4
  236. package/lib/serialization/FileMiddleware.js +7 -4
  237. package/lib/serialization/ObjectMiddleware.js +14 -8
  238. package/lib/serialization/Serializer.js +5 -3
  239. package/lib/serialization/SerializerMiddleware.js +2 -0
  240. package/lib/sharing/ConsumeSharedModule.js +1 -1
  241. package/lib/sharing/ConsumeSharedPlugin.js +3 -3
  242. package/lib/sharing/ConsumeSharedRuntimeModule.js +2 -2
  243. package/lib/sharing/ProvideSharedModule.js +1 -1
  244. package/lib/sharing/ProvideSharedPlugin.js +6 -3
  245. package/lib/sharing/SharePlugin.js +2 -1
  246. package/lib/sharing/ShareRuntimeModule.js +3 -5
  247. package/lib/sharing/utils.js +34 -34
  248. package/lib/stats/DefaultStatsFactoryPlugin.js +49 -46
  249. package/lib/stats/DefaultStatsPresetPlugin.js +4 -2
  250. package/lib/stats/DefaultStatsPrinterPlugin.js +28 -22
  251. package/lib/stats/StatsFactory.js +4 -2
  252. package/lib/stats/StatsPrinter.js +3 -2
  253. package/lib/url/URLParserPlugin.js +266 -0
  254. package/lib/util/ArrayQueue.js +1 -1
  255. package/lib/util/AsyncQueue.js +1 -1
  256. package/lib/util/Hash.js +2 -0
  257. package/lib/util/IterableHelpers.js +1 -1
  258. package/lib/util/LazyBucketSortedSet.js +2 -1
  259. package/lib/util/LazySet.js +11 -6
  260. package/lib/util/ParallelismFactorCalculator.js +1 -1
  261. package/lib/util/SetHelpers.js +3 -3
  262. package/lib/util/SortableSet.js +2 -2
  263. package/lib/util/StackedCacheMap.js +3 -1
  264. package/lib/util/StackedMap.js +2 -2
  265. package/lib/util/StringXor.js +1 -0
  266. package/lib/util/TupleSet.js +1 -0
  267. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  268. package/lib/util/cleverMerge.js +12 -8
  269. package/lib/util/comparators.js +154 -127
  270. package/lib/util/compileBooleanMatcher.js +8 -3
  271. package/lib/util/concatenate.js +8 -7
  272. package/lib/util/conventions.js +72 -73
  273. package/lib/util/create-schema-validation.js +2 -1
  274. package/lib/util/createHash.js +10 -4
  275. package/lib/util/deprecation.js +69 -66
  276. package/lib/util/deterministicGrouping.js +4 -2
  277. package/lib/util/extractUrlAndGlobal.js +1 -1
  278. package/lib/util/findGraphRoots.js +2 -2
  279. package/lib/util/fs.js +30 -23
  280. package/lib/util/hash/md4.js +2 -2
  281. package/lib/util/hash/wasm-hash.js +4 -2
  282. package/lib/util/identifier.js +13 -12
  283. package/lib/util/internalSerializables.js +2 -0
  284. package/lib/util/magicComment.js +5 -5
  285. package/lib/util/processAsyncTree.js +1 -1
  286. package/lib/util/propertyAccess.js +1 -1
  287. package/lib/util/propertyName.js +1 -1
  288. package/lib/util/registerExternalSerializer.js +1 -2
  289. package/lib/util/removeBOM.js +1 -1
  290. package/lib/util/runtime.js +29 -21
  291. package/lib/util/semver.js +1 -1
  292. package/lib/util/serialization.js +3 -0
  293. package/lib/util/source.js +3 -2
  294. package/lib/validateSchema.js +1 -0
  295. package/lib/wasm/EnableWasmLoadingPlugin.js +6 -3
  296. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +4 -1
  297. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +46 -49
  298. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +2 -2
  299. package/lib/wasm-sync/WebAssemblyGenerator.js +2 -3
  300. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +3 -2
  301. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +3 -0
  302. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  303. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -22
  304. package/lib/webpack.js +4 -5
  305. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +1 -0
  306. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -24
  307. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  308. package/package.json +121 -114
  309. package/schemas/WebpackOptions.check.js +1 -1
  310. package/schemas/WebpackOptions.json +17 -0
  311. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  312. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  313. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  314. package/types.d.ts +1261 -366
@@ -22,7 +22,7 @@ const makePathsRelative = require("./util/identifier").makePathsRelative;
22
22
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
23
23
 
24
24
  const validate = createSchemaValidation(
25
- require("../schemas/plugins/DllReferencePlugin.check.js"),
25
+ require("../schemas/plugins/DllReferencePlugin.check"),
26
26
  () => require("../schemas/plugins/DllReferencePlugin.json"),
27
27
  {
28
28
  name: "Dll Reference Plugin",
@@ -78,7 +78,7 @@ class DllReferencePlugin {
78
78
  // or malformed manifest files don't kill the process.
79
79
  try {
80
80
  data.data = parseJson(
81
- /** @type {Buffer} */ (result).toString("utf-8")
81
+ /** @type {Buffer} */ (result).toString("utf8")
82
82
  );
83
83
  } catch (parseErr) {
84
84
  // Store the error in the params so that it can
@@ -80,7 +80,7 @@ class DynamicEntryPlugin {
80
80
  }
81
81
  return Promise.all(promises);
82
82
  })
83
- .then(x => {})
83
+ .then(() => {})
84
84
  );
85
85
  }
86
86
  }
@@ -33,9 +33,11 @@ class EntryOptionPlugin {
33
33
  static applyEntryOption(compiler, context, entry) {
34
34
  if (typeof entry === "function") {
35
35
  const DynamicEntryPlugin = require("./DynamicEntryPlugin");
36
+
36
37
  new DynamicEntryPlugin(context, entry).apply(compiler);
37
38
  } else {
38
39
  const EntryPlugin = require("./EntryPlugin");
40
+
39
41
  for (const name of Object.keys(entry)) {
40
42
  const desc = entry[name];
41
43
  const options = EntryOptionPlugin.entryDescriptionToOptions(
@@ -81,14 +83,17 @@ class EntryOptionPlugin {
81
83
  }
82
84
  if (desc.chunkLoading) {
83
85
  const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
86
+
84
87
  EnableChunkLoadingPlugin.checkEnabled(compiler, desc.chunkLoading);
85
88
  }
86
89
  if (desc.wasmLoading) {
87
90
  const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
91
+
88
92
  EnableWasmLoadingPlugin.checkEnabled(compiler, desc.wasmLoading);
89
93
  }
90
94
  if (desc.library) {
91
95
  const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
96
+
92
97
  EnableLibraryPlugin.checkEnabled(compiler, desc.library.type);
93
98
  }
94
99
  return options;
@@ -91,10 +91,10 @@ const cleanUpWebpackOptions = (stack, message) => {
91
91
  return stack;
92
92
  };
93
93
 
94
+ module.exports.cleanUp = cleanUp;
95
+ module.exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
94
96
  module.exports.cutOffByFlag = cutOffByFlag;
95
97
  module.exports.cutOffLoaderExecution = cutOffLoaderExecution;
96
- module.exports.cutOffWebpackOptions = cutOffWebpackOptions;
97
- module.exports.cutOffMultilineMessage = cutOffMultilineMessage;
98
98
  module.exports.cutOffMessage = cutOffMessage;
99
- module.exports.cleanUp = cleanUp;
100
- module.exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
99
+ module.exports.cutOffMultilineMessage = cutOffMultilineMessage;
100
+ module.exports.cutOffWebpackOptions = cutOffWebpackOptions;
@@ -95,9 +95,9 @@ class EvalDevToolModulePlugin {
95
95
  `eval(${
96
96
  compilation.outputOptions.trustedTypes
97
97
  ? `${RuntimeGlobals.createScript}(${JSON.stringify(
98
- content + footer
98
+ `{${content + footer}\n}`
99
99
  )})`
100
- : JSON.stringify(content + footer)
100
+ : JSON.stringify(`{${content + footer}\n}`)
101
101
  });`
102
102
  );
103
103
  cache.set(source, result);
@@ -119,7 +119,7 @@ class EvalDevToolModulePlugin {
119
119
  if (compilation.outputOptions.trustedTypes) {
120
120
  compilation.hooks.additionalModuleRuntimeRequirements.tap(
121
121
  PLUGIN_NAME,
122
- (module, set, context) => {
122
+ (module, set, _context) => {
123
123
  set.add(RuntimeGlobals.createScript);
124
124
  }
125
125
  );
@@ -15,12 +15,12 @@ const ConcatenatedModule = require("./optimize/ConcatenatedModule");
15
15
  const generateDebugId = require("./util/generateDebugId");
16
16
  const { makePathsAbsolute } = require("./util/identifier");
17
17
 
18
+ /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
18
19
  /** @typedef {import("webpack-sources").Source} Source */
19
20
  /** @typedef {import("../declarations/WebpackOptions").DevTool} DevToolOptions */
20
21
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
21
22
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
22
23
  /** @typedef {import("./Compiler")} Compiler */
23
- /** @typedef {import("./NormalModule").SourceMap} SourceMap */
24
24
 
25
25
  /** @type {WeakMap<Source, Source>} */
26
26
  const cache = new WeakMap();
@@ -117,15 +117,15 @@ class EvalSourceMapDevToolPlugin {
117
117
  const namespace = compilation.getPath(this.namespace, {
118
118
  chunk
119
119
  });
120
- /** @type {SourceMap} */
120
+ /** @type {RawSourceMap} */
121
121
  let sourceMap;
122
122
  let content;
123
123
  if (source.sourceAndMap) {
124
124
  const sourceAndMap = source.sourceAndMap(options);
125
- sourceMap = /** @type {SourceMap} */ (sourceAndMap.map);
125
+ sourceMap = /** @type {RawSourceMap} */ (sourceAndMap.map);
126
126
  content = sourceAndMap.source;
127
127
  } else {
128
- sourceMap = /** @type {SourceMap} */ (source.map(options));
128
+ sourceMap = /** @type {RawSourceMap} */ (source.map(options));
129
129
  content = source.source();
130
130
  }
131
131
  if (!sourceMap) {
@@ -191,16 +191,16 @@ class EvalSourceMapDevToolPlugin {
191
191
  `eval(${
192
192
  compilation.outputOptions.trustedTypes
193
193
  ? `${RuntimeGlobals.createScript}(${JSON.stringify(
194
- content + footer
194
+ `{${content + footer}\n}`
195
195
  )})`
196
- : JSON.stringify(content + footer)
196
+ : JSON.stringify(`{${content + footer}\n}`)
197
197
  });`
198
198
  )
199
199
  );
200
200
  }
201
201
  );
202
202
  hooks.inlineInRuntimeBailout.tap(
203
- "EvalDevToolModulePlugin",
203
+ PLUGIN_NAME,
204
204
  () => "the eval-source-map devtool is used."
205
205
  );
206
206
  hooks.render.tap(
@@ -159,8 +159,9 @@ class ExportsInfo {
159
159
  * @returns {ExportInfo} the export info of unlisted exports
160
160
  */
161
161
  get otherExportsInfo() {
162
- if (this._redirectTo !== undefined)
162
+ if (this._redirectTo !== undefined) {
163
163
  return this._redirectTo.otherExportsInfo;
164
+ }
164
165
  return this._otherExportsInfo;
165
166
  }
166
167
 
@@ -259,8 +260,9 @@ class ExportsInfo {
259
260
  getExportInfo(name) {
260
261
  const info = this._exports.get(name);
261
262
  if (info !== undefined) return info;
262
- if (this._redirectTo !== undefined)
263
+ if (this._redirectTo !== undefined) {
263
264
  return this._redirectTo.getExportInfo(name);
265
+ }
264
266
  const newInfo = new ExportInfo(name, this._otherExportsInfo);
265
267
  this._exports.set(name, newInfo);
266
268
  this._exportsAreOrdered = false;
@@ -274,8 +276,9 @@ class ExportsInfo {
274
276
  getReadOnlyExportInfo(name) {
275
277
  const info = this._exports.get(name);
276
278
  if (info !== undefined) return info;
277
- if (this._redirectTo !== undefined)
279
+ if (this._redirectTo !== undefined) {
278
280
  return this._redirectTo.getReadOnlyExportInfo(name);
281
+ }
279
282
  return this._otherExportsInfo;
280
283
  }
281
284
 
@@ -494,8 +497,9 @@ class ExportsInfo {
494
497
  */
495
498
  isModuleUsed(runtime) {
496
499
  if (this.isUsed(runtime)) return true;
497
- if (this._sideEffectsOnlyInfo.getUsed(runtime) !== UsageState.Unused)
500
+ if (this._sideEffectsOnlyInfo.getUsed(runtime) !== UsageState.Unused) {
498
501
  return true;
502
+ }
499
503
  return false;
500
504
  }
501
505
 
@@ -504,17 +508,15 @@ class ExportsInfo {
504
508
  * @returns {SortableSet<string> | boolean | null} set of used exports, or true (when namespace object is used), or false (when unused), or null (when unknown)
505
509
  */
506
510
  getUsedExports(runtime) {
507
- // eslint-disable-next-line no-constant-binary-expression
508
- if (!this._redirectTo !== undefined) {
509
- switch (this._otherExportsInfo.getUsed(runtime)) {
510
- case UsageState.NoInfo:
511
- return null;
512
- case UsageState.Unknown:
513
- case UsageState.OnlyPropertiesUsed:
514
- case UsageState.Used:
515
- return true;
516
- }
511
+ switch (this._otherExportsInfo.getUsed(runtime)) {
512
+ case UsageState.NoInfo:
513
+ return null;
514
+ case UsageState.Unknown:
515
+ case UsageState.OnlyPropertiesUsed:
516
+ case UsageState.Used:
517
+ return true;
517
518
  }
519
+
518
520
  const array = [];
519
521
  if (!this._exportsAreOrdered) this._sortExports();
520
522
  for (const exportInfo of this._exports.values()) {
@@ -553,17 +555,15 @@ class ExportsInfo {
553
555
  * @returns {null | true | string[]} list of exports when known
554
556
  */
555
557
  getProvidedExports() {
556
- // eslint-disable-next-line no-constant-binary-expression
557
- if (!this._redirectTo !== undefined) {
558
- switch (this._otherExportsInfo.provided) {
559
- case undefined:
560
- return null;
561
- case null:
562
- return true;
563
- case true:
564
- return true;
565
- }
558
+ switch (this._otherExportsInfo.provided) {
559
+ case undefined:
560
+ return null;
561
+ case null:
562
+ return true;
563
+ case true:
564
+ return true;
566
565
  }
566
+
567
567
  /** @type {string[]} */
568
568
  const array = [];
569
569
  if (!this._exportsAreOrdered) this._sortExports();
@@ -671,8 +671,9 @@ class ExportsInfo {
671
671
  return false;
672
672
  }
673
673
  for (const exportInfo of this.ownedExports) {
674
- if (exportInfo.getUsed(runtimeA) !== exportInfo.getUsed(runtimeB))
674
+ if (exportInfo.getUsed(runtimeA) !== exportInfo.getUsed(runtimeB)) {
675
675
  return false;
676
+ }
676
677
  }
677
678
  return true;
678
679
  }
@@ -722,9 +723,9 @@ class ExportsInfo {
722
723
  ) {
723
724
  const nested = info.exportsInfo.getUsedName(name.slice(1), runtime);
724
725
  if (!nested) return false;
725
- return arr.concat(nested);
726
+ return [...arr, ...(Array.isArray(nested) ? nested : [nested])];
726
727
  }
727
- return arr.concat(name.slice(1));
728
+ return [...arr, ...name.slice(1)];
728
729
  }
729
730
  const info = this.getReadOnlyExportInfo(name);
730
731
  const usedName = info.getUsedName(name, runtime);
@@ -832,7 +833,7 @@ class ExportsInfo {
832
833
 
833
834
  /** @typedef {Map<string, RuntimeUsageStateType>} UsedInRuntime */
834
835
 
835
- /** @typedef {{ module: Module, export: string[] }} TargetItemWithoutConnection */
836
+ /** @typedef {{ module: Module, export: string[], deferred: boolean }} TargetItemWithoutConnection */
836
837
 
837
838
  /** @typedef {{ module: Module, connection: ModuleGraphConnection, export: string[] | undefined }} TargetItemWithConnection */
838
839
 
@@ -1245,7 +1246,7 @@ class ExportInfo {
1245
1246
  }
1246
1247
  } else if (
1247
1248
  runtime !== undefined &&
1248
- Array.from(runtime).every(
1249
+ [...runtime].every(
1249
1250
  runtime =>
1250
1251
  !(/** @type {UsedInRuntime} */ (this._usedInRuntime).has(runtime))
1251
1252
  )
@@ -1294,8 +1295,9 @@ class ExportInfo {
1294
1295
 
1295
1296
  _getMaxTarget() {
1296
1297
  if (this._maxTarget !== undefined) return this._maxTarget;
1297
- if (/** @type {Target} */ (this._target).size <= 1)
1298
+ if (/** @type {Target} */ (this._target).size <= 1) {
1298
1299
  return (this._maxTarget = this._target);
1300
+ }
1299
1301
  let maxPriority = -Infinity;
1300
1302
  let minPriority = Infinity;
1301
1303
  for (const { priority } of /** @type {Target} */ (this._target).values()) {
@@ -1341,7 +1343,10 @@ class ExportInfo {
1341
1343
  /** @type {TargetItemWithoutConnection} */
1342
1344
  let target = {
1343
1345
  module: rawTarget.connection.module,
1344
- export: rawTarget.export
1346
+ export: rawTarget.export,
1347
+ deferred: Boolean(
1348
+ rawTarget.connection.dependency && rawTarget.connection.dependency.defer
1349
+ )
1345
1350
  };
1346
1351
  for (;;) {
1347
1352
  if (validTargetModuleFilter(target.module)) return target;
@@ -1360,8 +1365,9 @@ class ExportInfo {
1360
1365
  target = {
1361
1366
  module: newTarget.module,
1362
1367
  export: newTarget.export
1363
- ? newTarget.export.concat(target.export.slice(1))
1364
- : target.export.slice(1)
1368
+ ? [...newTarget.export, ...target.export.slice(1)]
1369
+ : target.export.slice(1),
1370
+ deferred: newTarget.deferred
1365
1371
  };
1366
1372
  }
1367
1373
  }
@@ -1433,10 +1439,11 @@ class ExportInfo {
1433
1439
  module: newTarget.module,
1434
1440
  connection: newTarget.connection,
1435
1441
  export: newTarget.export
1436
- ? newTarget.export.concat(
1437
- /** @type {NonNullable<TargetItemWithConnection["export"]>} */
1442
+ ? [
1443
+ ...newTarget.export,
1444
+ .../** @type {NonNullable<TargetItemWithConnection["export"]>} */
1438
1445
  (target.export).slice(1)
1439
- )
1446
+ ]
1440
1447
  : /** @type {NonNullable<TargetItemWithConnection["export"]>} */
1441
1448
  (target.export).slice(1)
1442
1449
  };
@@ -1468,8 +1475,9 @@ class ExportInfo {
1468
1475
  if (
1469
1476
  target.export &&
1470
1477
  !equals(/** @type {ArrayLike<string>} */ (t.export), target.export)
1471
- )
1478
+ ) {
1472
1479
  return;
1480
+ }
1473
1481
  result = values.next();
1474
1482
  }
1475
1483
  return target;
@@ -1517,8 +1525,9 @@ class ExportInfo {
1517
1525
  * @returns {ExportsInfo} an exports info
1518
1526
  */
1519
1527
  createNestedExportsInfo() {
1520
- if (this.exportsInfoOwned)
1528
+ if (this.exportsInfoOwned) {
1521
1529
  return /** @type {ExportsInfo} */ (this.exportsInfo);
1530
+ }
1522
1531
  this.exportsInfoOwned = true;
1523
1532
  const oldExportsInfo = this.exportsInfo;
1524
1533
  this.exportsInfo = new ExportsInfo();
@@ -1671,5 +1680,5 @@ class ExportInfo {
1671
1680
 
1672
1681
  module.exports = ExportsInfo;
1673
1682
  module.exports.ExportInfo = ExportInfo;
1674
- module.exports.UsageState = UsageState;
1675
1683
  module.exports.RestoreProvidedData = RestoreProvidedData;
1684
+ module.exports.UsageState = UsageState;
@@ -12,9 +12,9 @@ const { UsageState } = require("./ExportsInfo");
12
12
  const InitFragment = require("./InitFragment");
13
13
  const Module = require("./Module");
14
14
  const {
15
- JS_TYPES,
15
+ CSS_IMPORT_TYPES,
16
16
  CSS_URL_TYPES,
17
- CSS_IMPORT_TYPES
17
+ JS_TYPES
18
18
  } = require("./ModuleSourceTypesConstants");
19
19
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
20
20
  const RuntimeGlobals = require("./RuntimeGlobals");
@@ -352,8 +352,9 @@ const getSourceForModuleExternal = (
352
352
  runtimeTemplate,
353
353
  dependencyMeta
354
354
  ) => {
355
- if (!Array.isArray(moduleAndSpecifiers))
355
+ if (!Array.isArray(moduleAndSpecifiers)) {
356
356
  moduleAndSpecifiers = [moduleAndSpecifiers];
357
+ }
357
358
  const initFragment = new ModuleExternalInitFragment(
358
359
  moduleAndSpecifiers[0],
359
360
  undefined,
@@ -587,7 +588,7 @@ class ExternalModule extends Module {
587
588
  this.buildInfo = {
588
589
  strict: true,
589
590
  topLevelDeclarations: new Set(),
590
- module: compilation.outputOptions.module
591
+ javascriptModule: compilation.outputOptions.module
591
592
  };
592
593
  const { request, externalType } = this._getRequestAndExternalType();
593
594
  this.buildMeta.exportsType = "dynamic";
@@ -604,7 +605,7 @@ class ExternalModule extends Module {
604
605
  }
605
606
  break;
606
607
  case "module":
607
- if (this.buildInfo.module) {
608
+ if (this.buildInfo.javascriptModule) {
608
609
  if (!Array.isArray(request) || request.length === 1) {
609
610
  this.buildMeta.exportsType = "namespace";
610
611
  canMangle = true;
@@ -668,7 +669,7 @@ class ExternalModule extends Module {
668
669
  * @param {ConcatenationBailoutReasonContext} context context
669
670
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
670
671
  */
671
- getConcatenationBailoutReason({ moduleGraph }) {
672
+ getConcatenationBailoutReason(context) {
672
673
  switch (this.externalType) {
673
674
  case "amd":
674
675
  case "amd-require":
@@ -683,8 +684,9 @@ class ExternalModule extends Module {
683
684
 
684
685
  _getRequestAndExternalType() {
685
686
  let { request, externalType } = this;
686
- if (typeof request === "object" && !Array.isArray(request))
687
+ if (typeof request === "object" && !Array.isArray(request)) {
687
688
  request = request[externalType];
689
+ }
688
690
  externalType = this._resolveExternalType(externalType);
689
691
  return { request, externalType };
690
692
  }
@@ -758,7 +760,7 @@ class ExternalModule extends Module {
758
760
  case "commonjs-static":
759
761
  return getSourceForCommonJsExternal(request);
760
762
  case "node-commonjs":
761
- return /** @type {BuildInfo} */ (this.buildInfo).module
763
+ return /** @type {BuildInfo} */ (this.buildInfo).javascriptModule
762
764
  ? getSourceForCommonJsExternalInNodeModule(
763
765
  request,
764
766
  /** @type {string} */
@@ -790,7 +792,7 @@ class ExternalModule extends Module {
790
792
  case "script":
791
793
  return getSourceForScriptExternal(request, runtimeTemplate);
792
794
  case "module": {
793
- if (!(/** @type {BuildInfo} */ (this.buildInfo).module)) {
795
+ if (!(/** @type {BuildInfo} */ (this.buildInfo).javascriptModule)) {
794
796
  if (!runtimeTemplate.supportsDynamicImport()) {
795
797
  throw new Error(
796
798
  `The target environment doesn't support dynamic import() syntax so it's not possible to use external type 'module' within a script${
@@ -900,8 +902,9 @@ class ExternalModule extends Module {
900
902
  );
901
903
 
902
904
  let sourceString = sourceData.expression;
903
- if (sourceData.iife)
905
+ if (sourceData.iife) {
904
906
  sourceString = `(function() { return ${sourceString}; }())`;
907
+ }
905
908
  if (concatenationScope) {
906
909
  sourceString = `${
907
910
  runtimeTemplate.supportsConst() ? "const" : "var"
@@ -912,8 +915,9 @@ class ExternalModule extends Module {
912
915
  } else {
913
916
  sourceString = `module.exports = ${sourceString};`;
914
917
  }
915
- if (sourceData.init)
918
+ if (sourceData.init) {
916
919
  sourceString = `${sourceData.init}\n${sourceString}`;
920
+ }
917
921
 
918
922
  let data;
919
923
  if (sourceData.chunkInitFragments) {
@@ -12,7 +12,7 @@ const CssImportDependency = require("./dependencies/CssImportDependency");
12
12
  const CssUrlDependency = require("./dependencies/CssUrlDependency");
13
13
  const HarmonyImportDependency = require("./dependencies/HarmonyImportDependency");
14
14
  const ImportDependency = require("./dependencies/ImportDependency");
15
- const { resolveByProperty, cachedSetProperty } = require("./util/cleverMerge");
15
+ const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
16
16
 
17
17
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
18
18
  /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
@@ -75,6 +75,8 @@ const resolveLayer = (obj, layer) => {
75
75
  /** @typedef {string | string[] | boolean | Record<string, string | string[]>} ExternalValue */
76
76
  /** @typedef {string | undefined} ExternalType */
77
77
 
78
+ const PLUGIN_NAME = "ExternalModuleFactoryPlugin";
79
+
78
80
  class ExternalModuleFactoryPlugin {
79
81
  /**
80
82
  * @param {string | undefined} type default external type
@@ -92,7 +94,7 @@ class ExternalModuleFactoryPlugin {
92
94
  apply(normalModuleFactory) {
93
95
  const globalType = this.type;
94
96
  normalModuleFactory.hooks.factorize.tapAsync(
95
- "ExternalModuleFactoryPlugin",
97
+ PLUGIN_NAME,
96
98
  (data, callback) => {
97
99
  const context = data.context;
98
100
  const contextInfo = data.contextInfo;
@@ -335,4 +337,5 @@ class ExternalModuleFactoryPlugin {
335
337
  );
336
338
  }
337
339
  }
340
+
338
341
  module.exports = ExternalModuleFactoryPlugin;