webpack 5.92.1 → 5.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +36 -21
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +76 -69
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +5 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +104 -64
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +132 -70
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +12 -10
  94. package/lib/UseStrictPlugin.js +8 -1
  95. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  96. package/lib/WatchIgnorePlugin.js +26 -9
  97. package/lib/Watching.js +10 -5
  98. package/lib/WebpackOptionsApply.js +89 -62
  99. package/lib/asset/AssetGenerator.js +107 -42
  100. package/lib/asset/AssetModulesPlugin.js +29 -23
  101. package/lib/asset/AssetSourceGenerator.js +2 -7
  102. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  103. package/lib/buildChunkGraph.js +14 -19
  104. package/lib/cache/IdleFileCachePlugin.js +4 -4
  105. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  106. package/lib/cache/PackFileCacheStrategy.js +51 -50
  107. package/lib/cache/ResolverCachePlugin.js +6 -6
  108. package/lib/cache/mergeEtags.js +16 -21
  109. package/lib/cli.js +148 -104
  110. package/lib/config/browserslistTargetHandler.js +16 -13
  111. package/lib/config/defaults.js +31 -28
  112. package/lib/config/normalization.js +335 -344
  113. package/lib/config/target.js +42 -52
  114. package/lib/container/ContainerEntryModule.js +2 -2
  115. package/lib/container/ContainerPlugin.js +1 -1
  116. package/lib/container/RemoteRuntimeModule.js +11 -8
  117. package/lib/container/options.js +18 -4
  118. package/lib/css/CssExportsGenerator.js +39 -40
  119. package/lib/css/CssGenerator.js +11 -14
  120. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  121. package/lib/css/CssModulesPlugin.js +127 -47
  122. package/lib/css/CssParser.js +20 -18
  123. package/lib/css/walkCssTokens.js +80 -95
  124. package/lib/debug/ProfilingPlugin.js +19 -20
  125. package/lib/dependencies/AMDDefineDependency.js +1 -1
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  127. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  128. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  129. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  130. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  131. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  132. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  133. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  134. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  135. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  136. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  137. package/lib/dependencies/ConstDependency.js +1 -1
  138. package/lib/dependencies/ContextDependency.js +1 -1
  139. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  140. package/lib/dependencies/ContextElementDependency.js +2 -2
  141. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  142. package/lib/dependencies/CssExportDependency.js +72 -9
  143. package/lib/dependencies/CssImportDependency.js +0 -2
  144. package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
  145. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  146. package/lib/dependencies/CssUrlDependency.js +4 -5
  147. package/lib/dependencies/DynamicExports.js +5 -5
  148. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  149. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  150. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  151. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  152. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  153. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  154. package/lib/dependencies/HarmonyExports.js +2 -2
  155. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  156. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  157. package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
  158. package/lib/dependencies/ImportDependency.js +1 -1
  159. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  160. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  161. package/lib/dependencies/ImportParserPlugin.js +39 -44
  162. package/lib/dependencies/JsonExportsDependency.js +22 -18
  163. package/lib/dependencies/LoaderPlugin.js +47 -36
  164. package/lib/dependencies/LocalModule.js +1 -1
  165. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  166. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  167. package/lib/dependencies/ProvidedDependency.js +1 -1
  168. package/lib/dependencies/PureExpressionDependency.js +6 -6
  169. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  170. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  171. package/lib/dependencies/SystemPlugin.js +1 -1
  172. package/lib/dependencies/URLDependency.js +3 -3
  173. package/lib/dependencies/URLPlugin.js +66 -12
  174. package/lib/dependencies/WorkerPlugin.js +25 -24
  175. package/lib/dependencies/processExportInfo.js +3 -1
  176. package/lib/electron/ElectronTargetPlugin.js +1 -0
  177. package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
  178. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  179. package/lib/formatLocation.js +1 -2
  180. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  181. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  182. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  183. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  184. package/lib/hmr/lazyCompilationBackend.js +64 -40
  185. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  186. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  187. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  188. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  189. package/lib/ids/IdHelpers.js +29 -39
  190. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  191. package/lib/index.js +1 -5
  192. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
  193. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  194. package/lib/javascript/ChunkHelpers.js +1 -1
  195. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
  196. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  197. package/lib/javascript/JavascriptGenerator.js +23 -7
  198. package/lib/javascript/JavascriptModulesPlugin.js +97 -70
  199. package/lib/javascript/JavascriptParser.js +179 -200
  200. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  201. package/lib/javascript/StartupHelpers.js +41 -13
  202. package/lib/json/JsonGenerator.js +7 -13
  203. package/lib/json/JsonModulesPlugin.js +1 -4
  204. package/lib/json/JsonParser.js +5 -3
  205. package/lib/library/AmdLibraryPlugin.js +12 -16
  206. package/lib/library/AssignLibraryPlugin.js +9 -11
  207. package/lib/library/EnableLibraryPlugin.js +25 -15
  208. package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
  209. package/lib/library/JsonpLibraryPlugin.js +2 -1
  210. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  211. package/lib/library/ModuleLibraryPlugin.js +2 -1
  212. package/lib/library/SystemLibraryPlugin.js +2 -1
  213. package/lib/library/UmdLibraryPlugin.js +66 -92
  214. package/lib/logging/Logger.js +32 -4
  215. package/lib/logging/createConsoleLogger.js +12 -13
  216. package/lib/logging/runtime.js +7 -8
  217. package/lib/logging/truncateArgs.js +5 -8
  218. package/lib/node/NodeWatchFileSystem.js +3 -18
  219. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  221. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  222. package/lib/node/nodeConsole.js +22 -22
  223. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  224. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  225. package/lib/optimize/ConcatenatedModule.js +144 -61
  226. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  227. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  228. package/lib/optimize/InnerGraph.js +17 -17
  229. package/lib/optimize/InnerGraphPlugin.js +8 -7
  230. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  231. package/lib/optimize/MangleExportsPlugin.js +1 -0
  232. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  233. package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
  234. package/lib/optimize/RealContentHashPlugin.js +7 -10
  235. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  236. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  237. package/lib/optimize/SplitChunksPlugin.js +34 -30
  238. package/lib/performance/SizeLimitsPlugin.js +2 -2
  239. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
  240. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  241. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  242. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  243. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  244. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  245. package/lib/rules/RuleSetCompiler.js +41 -22
  246. package/lib/rules/UseEffectRulePlugin.js +36 -32
  247. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  248. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  249. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  250. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  251. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  253. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  254. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  255. package/lib/schemes/DataUriPlugin.js +1 -1
  256. package/lib/schemes/HttpUriPlugin.js +241 -126
  257. package/lib/serialization/BinaryMiddleware.js +44 -28
  258. package/lib/serialization/DateObjectSerializer.js +1 -0
  259. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  260. package/lib/serialization/FileMiddleware.js +154 -106
  261. package/lib/serialization/MapObjectSerializer.js +2 -1
  262. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  263. package/lib/serialization/ObjectMiddleware.js +52 -56
  264. package/lib/serialization/PlainObjectSerializer.js +32 -6
  265. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  266. package/lib/serialization/Serializer.js +4 -5
  267. package/lib/serialization/SerializerMiddleware.js +6 -6
  268. package/lib/serialization/SetObjectSerializer.js +2 -1
  269. package/lib/sharing/ConsumeSharedModule.js +19 -14
  270. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  271. package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
  272. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  273. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  274. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  275. package/lib/sharing/utils.js +15 -27
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  277. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  279. package/lib/stats/StatsFactory.js +127 -56
  280. package/lib/stats/StatsPrinter.js +75 -44
  281. package/lib/util/ArrayHelpers.js +8 -4
  282. package/lib/util/ArrayQueue.js +1 -1
  283. package/lib/util/AsyncQueue.js +31 -12
  284. package/lib/util/IterableHelpers.js +3 -4
  285. package/lib/util/LazyBucketSortedSet.js +60 -44
  286. package/lib/util/LazySet.js +1 -0
  287. package/lib/util/MapHelpers.js +1 -3
  288. package/lib/util/ParallelismFactorCalculator.js +1 -1
  289. package/lib/util/Queue.js +1 -1
  290. package/lib/util/Semaphore.js +4 -7
  291. package/lib/util/SetHelpers.js +5 -5
  292. package/lib/util/SortableSet.js +4 -3
  293. package/lib/util/StackedCacheMap.js +4 -6
  294. package/lib/util/StackedMap.js +1 -3
  295. package/lib/util/StringXor.js +0 -5
  296. package/lib/util/TupleQueue.js +1 -1
  297. package/lib/util/TupleSet.js +15 -5
  298. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  299. package/lib/util/WeakTupleMap.js +19 -21
  300. package/lib/util/binarySearchBounds.js +5 -12
  301. package/lib/util/chainedImports.js +1 -1
  302. package/lib/util/cleverMerge.js +21 -19
  303. package/lib/util/comparators.js +57 -52
  304. package/lib/util/compileBooleanMatcher.js +3 -6
  305. package/lib/util/conventions.js +10 -13
  306. package/lib/util/createHash.js +9 -6
  307. package/lib/util/deprecation.js +22 -12
  308. package/lib/util/deterministicGrouping.js +19 -26
  309. package/lib/util/findGraphRoots.js +2 -2
  310. package/lib/util/fs.js +31 -31
  311. package/lib/util/hash/md4.js +2 -2
  312. package/lib/util/hash/wasm-hash.js +7 -7
  313. package/lib/util/hash/xxhash64.js +2 -2
  314. package/lib/util/identifier.js +81 -59
  315. package/lib/util/memoize.js +8 -10
  316. package/lib/util/mergeScope.js +6 -9
  317. package/lib/util/nonNumericOnlyHash.js +2 -2
  318. package/lib/util/numberHash.js +1 -6
  319. package/lib/util/objectToMap.js +0 -1
  320. package/lib/util/propertyAccess.js +2 -5
  321. package/lib/util/propertyName.js +1 -3
  322. package/lib/util/registerExternalSerializer.js +1 -1
  323. package/lib/util/runtime.js +103 -113
  324. package/lib/util/semver.js +29 -27
  325. package/lib/util/serialization.js +16 -1
  326. package/lib/util/smartGrouping.js +5 -5
  327. package/lib/util/source.js +1 -1
  328. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  329. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  330. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  331. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  332. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  333. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  334. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  336. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  337. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  338. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  339. package/package.json +17 -16
  340. package/schemas/WebpackOptions.check.js +1 -1
  341. package/schemas/WebpackOptions.json +17 -0
  342. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  343. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  344. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  345. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  346. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  347. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  348. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  349. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  350. package/types.d.ts +682 -347
@@ -56,10 +56,7 @@ const nestedConfig = (value, fn) =>
56
56
  * @param {T|undefined} value value or not
57
57
  * @returns {T} result value
58
58
  */
59
- const cloneObject = value => {
60
- return /** @type {T} */ ({ ...value });
61
- };
62
-
59
+ const cloneObject = value => /** @type {T} */ ({ ...value });
63
60
  /**
64
61
  * @template T
65
62
  * @template R
@@ -98,6 +95,7 @@ const optionalNestedArray = (value, fn) =>
98
95
  * @returns {Record<string, R>} result value
99
96
  */
100
97
  const keyedNestedConfig = (value, fn, customKeys) => {
98
+ /* eslint-disable no-sequences */
101
99
  const result =
102
100
  value === undefined
103
101
  ? {}
@@ -110,6 +108,7 @@ const keyedNestedConfig = (value, fn, customKeys) => {
110
108
  ),
111
109
  /** @type {Record<string, R>} */ ({})
112
110
  );
111
+ /* eslint-enable no-sequences */
113
112
  if (customKeys) {
114
113
  for (const key of Object.keys(customKeys)) {
115
114
  if (!(key in result)) {
@@ -124,357 +123,349 @@ const keyedNestedConfig = (value, fn, customKeys) => {
124
123
  * @param {WebpackOptions} config input config
125
124
  * @returns {WebpackOptionsNormalized} normalized options
126
125
  */
127
- const getNormalizedWebpackOptions = config => {
128
- return {
129
- amd: config.amd,
130
- bail: config.bail,
131
- cache:
132
- /** @type {NonNullable<CacheOptions>} */
133
- (
134
- optionalNestedConfig(config.cache, cache => {
135
- if (cache === false) return false;
136
- if (cache === true) {
126
+ const getNormalizedWebpackOptions = config => ({
127
+ amd: config.amd,
128
+ bail: config.bail,
129
+ cache:
130
+ /** @type {NonNullable<CacheOptions>} */
131
+ (
132
+ optionalNestedConfig(config.cache, cache => {
133
+ if (cache === false) return false;
134
+ if (cache === true) {
135
+ return {
136
+ type: "memory",
137
+ maxGenerations: undefined
138
+ };
139
+ }
140
+ switch (cache.type) {
141
+ case "filesystem":
142
+ return {
143
+ type: "filesystem",
144
+ allowCollectingMemory: cache.allowCollectingMemory,
145
+ maxMemoryGenerations: cache.maxMemoryGenerations,
146
+ maxAge: cache.maxAge,
147
+ profile: cache.profile,
148
+ buildDependencies: cloneObject(cache.buildDependencies),
149
+ cacheDirectory: cache.cacheDirectory,
150
+ cacheLocation: cache.cacheLocation,
151
+ hashAlgorithm: cache.hashAlgorithm,
152
+ compression: cache.compression,
153
+ idleTimeout: cache.idleTimeout,
154
+ idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
155
+ idleTimeoutAfterLargeChanges: cache.idleTimeoutAfterLargeChanges,
156
+ name: cache.name,
157
+ store: cache.store,
158
+ version: cache.version,
159
+ readonly: cache.readonly
160
+ };
161
+ case undefined:
162
+ case "memory":
137
163
  return {
138
164
  type: "memory",
139
- maxGenerations: undefined
165
+ maxGenerations: cache.maxGenerations
140
166
  };
167
+ default:
168
+ // @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
169
+ throw new Error(`Not implemented cache.type ${cache.type}`);
170
+ }
171
+ })
172
+ ),
173
+ context: config.context,
174
+ dependencies: config.dependencies,
175
+ devServer: optionalNestedConfig(config.devServer, devServer => {
176
+ if (devServer === false) return false;
177
+ return { ...devServer };
178
+ }),
179
+ devtool: config.devtool,
180
+ entry:
181
+ config.entry === undefined
182
+ ? { main: {} }
183
+ : typeof config.entry === "function"
184
+ ? (
185
+ fn => () =>
186
+ Promise.resolve().then(fn).then(getNormalizedEntryStatic)
187
+ )(config.entry)
188
+ : getNormalizedEntryStatic(config.entry),
189
+ experiments: nestedConfig(config.experiments, experiments => ({
190
+ ...experiments,
191
+ buildHttp: optionalNestedConfig(experiments.buildHttp, options =>
192
+ Array.isArray(options) ? { allowedUris: options } : options
193
+ ),
194
+ lazyCompilation: optionalNestedConfig(
195
+ experiments.lazyCompilation,
196
+ options => (options === true ? {} : options)
197
+ )
198
+ })),
199
+ externals: /** @type {NonNullable<Externals>} */ (config.externals),
200
+ externalsPresets: cloneObject(config.externalsPresets),
201
+ externalsType: config.externalsType,
202
+ ignoreWarnings: config.ignoreWarnings
203
+ ? config.ignoreWarnings.map(ignore => {
204
+ if (typeof ignore === "function") return ignore;
205
+ const i = ignore instanceof RegExp ? { message: ignore } : ignore;
206
+ return (warning, { requestShortener }) => {
207
+ if (!i.message && !i.module && !i.file) return false;
208
+ if (i.message && !i.message.test(warning.message)) {
209
+ return false;
141
210
  }
142
- switch (cache.type) {
143
- case "filesystem":
144
- return {
145
- type: "filesystem",
146
- allowCollectingMemory: cache.allowCollectingMemory,
147
- maxMemoryGenerations: cache.maxMemoryGenerations,
148
- maxAge: cache.maxAge,
149
- profile: cache.profile,
150
- buildDependencies: cloneObject(cache.buildDependencies),
151
- cacheDirectory: cache.cacheDirectory,
152
- cacheLocation: cache.cacheLocation,
153
- hashAlgorithm: cache.hashAlgorithm,
154
- compression: cache.compression,
155
- idleTimeout: cache.idleTimeout,
156
- idleTimeoutForInitialStore: cache.idleTimeoutForInitialStore,
157
- idleTimeoutAfterLargeChanges:
158
- cache.idleTimeoutAfterLargeChanges,
159
- name: cache.name,
160
- store: cache.store,
161
- version: cache.version,
162
- readonly: cache.readonly
163
- };
164
- case undefined:
165
- case "memory":
166
- return {
167
- type: "memory",
168
- maxGenerations: cache.maxGenerations
169
- };
170
- default:
171
- // @ts-expect-error Property 'type' does not exist on type 'never'. ts(2339)
172
- throw new Error(`Not implemented cache.type ${cache.type}`);
211
+ if (
212
+ i.module &&
213
+ (!warning.module ||
214
+ !i.module.test(
215
+ warning.module.readableIdentifier(requestShortener)
216
+ ))
217
+ ) {
218
+ return false;
173
219
  }
174
- })
175
- ),
176
- context: config.context,
177
- dependencies: config.dependencies,
178
- devServer: optionalNestedConfig(config.devServer, devServer => {
179
- if (devServer === false) return false;
180
- return { ...devServer };
181
- }),
182
- devtool: config.devtool,
183
- entry:
184
- config.entry === undefined
185
- ? { main: {} }
186
- : typeof config.entry === "function"
187
- ? (
188
- fn => () =>
189
- Promise.resolve().then(fn).then(getNormalizedEntryStatic)
190
- )(config.entry)
191
- : getNormalizedEntryStatic(config.entry),
192
- experiments: nestedConfig(config.experiments, experiments => ({
193
- ...experiments,
194
- buildHttp: optionalNestedConfig(experiments.buildHttp, options =>
195
- Array.isArray(options) ? { allowedUris: options } : options
196
- ),
197
- lazyCompilation: optionalNestedConfig(
198
- experiments.lazyCompilation,
199
- options => (options === true ? {} : options)
200
- )
201
- })),
202
- externals: /** @type {NonNullable<Externals>} */ (config.externals),
203
- externalsPresets: cloneObject(config.externalsPresets),
204
- externalsType: config.externalsType,
205
- ignoreWarnings: config.ignoreWarnings
206
- ? config.ignoreWarnings.map(ignore => {
207
- if (typeof ignore === "function") return ignore;
208
- const i = ignore instanceof RegExp ? { message: ignore } : ignore;
209
- return (warning, { requestShortener }) => {
210
- if (!i.message && !i.module && !i.file) return false;
211
- if (i.message && !i.message.test(warning.message)) {
212
- return false;
213
- }
214
- if (
215
- i.module &&
216
- (!warning.module ||
217
- !i.module.test(
218
- warning.module.readableIdentifier(requestShortener)
219
- ))
220
- ) {
221
- return false;
222
- }
223
- if (i.file && (!warning.file || !i.file.test(warning.file))) {
224
- return false;
225
- }
226
- return true;
227
- };
228
- })
229
- : undefined,
230
- infrastructureLogging: cloneObject(config.infrastructureLogging),
231
- loader: cloneObject(config.loader),
232
- mode: config.mode,
233
- module:
234
- /** @type {ModuleOptionsNormalized} */
235
- (
236
- nestedConfig(config.module, module => ({
237
- noParse: module.noParse,
238
- unsafeCache: module.unsafeCache,
239
- parser: keyedNestedConfig(module.parser, cloneObject, {
240
- javascript: parserOptions => ({
241
- unknownContextRequest: module.unknownContextRequest,
242
- unknownContextRegExp: module.unknownContextRegExp,
243
- unknownContextRecursive: module.unknownContextRecursive,
244
- unknownContextCritical: module.unknownContextCritical,
245
- exprContextRequest: module.exprContextRequest,
246
- exprContextRegExp: module.exprContextRegExp,
247
- exprContextRecursive: module.exprContextRecursive,
248
- exprContextCritical: module.exprContextCritical,
249
- wrappedContextRegExp: module.wrappedContextRegExp,
250
- wrappedContextRecursive: module.wrappedContextRecursive,
251
- wrappedContextCritical: module.wrappedContextCritical,
252
- // TODO webpack 6 remove
253
- strictExportPresence: module.strictExportPresence,
254
- strictThisContextOnImports: module.strictThisContextOnImports,
255
- ...parserOptions
256
- })
257
- }),
258
- generator: cloneObject(module.generator),
259
- defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
260
- rules: nestedArray(module.rules, r => [...r])
261
- }))
262
- ),
263
- name: config.name,
264
- node: nestedConfig(
265
- config.node,
266
- node =>
267
- node && {
268
- ...node
220
+ if (i.file && (!warning.file || !i.file.test(warning.file))) {
221
+ return false;
222
+ }
223
+ return true;
224
+ };
225
+ })
226
+ : undefined,
227
+ infrastructureLogging: cloneObject(config.infrastructureLogging),
228
+ loader: cloneObject(config.loader),
229
+ mode: config.mode,
230
+ module:
231
+ /** @type {ModuleOptionsNormalized} */
232
+ (
233
+ nestedConfig(config.module, module => ({
234
+ noParse: module.noParse,
235
+ unsafeCache: module.unsafeCache,
236
+ parser: keyedNestedConfig(module.parser, cloneObject, {
237
+ javascript: parserOptions => ({
238
+ unknownContextRequest: module.unknownContextRequest,
239
+ unknownContextRegExp: module.unknownContextRegExp,
240
+ unknownContextRecursive: module.unknownContextRecursive,
241
+ unknownContextCritical: module.unknownContextCritical,
242
+ exprContextRequest: module.exprContextRequest,
243
+ exprContextRegExp: module.exprContextRegExp,
244
+ exprContextRecursive: module.exprContextRecursive,
245
+ exprContextCritical: module.exprContextCritical,
246
+ wrappedContextRegExp: module.wrappedContextRegExp,
247
+ wrappedContextRecursive: module.wrappedContextRecursive,
248
+ wrappedContextCritical: module.wrappedContextCritical,
249
+ // TODO webpack 6 remove
250
+ strictExportPresence: module.strictExportPresence,
251
+ strictThisContextOnImports: module.strictThisContextOnImports,
252
+ ...parserOptions
253
+ })
254
+ }),
255
+ generator: cloneObject(module.generator),
256
+ defaultRules: optionalNestedArray(module.defaultRules, r => [...r]),
257
+ rules: nestedArray(module.rules, r => [...r])
258
+ }))
259
+ ),
260
+ name: config.name,
261
+ node: nestedConfig(
262
+ config.node,
263
+ node =>
264
+ node && {
265
+ ...node
266
+ }
267
+ ),
268
+ optimization: nestedConfig(config.optimization, optimization => ({
269
+ ...optimization,
270
+ runtimeChunk: getNormalizedOptimizationRuntimeChunk(
271
+ optimization.runtimeChunk
272
+ ),
273
+ splitChunks: nestedConfig(
274
+ optimization.splitChunks,
275
+ splitChunks =>
276
+ splitChunks && {
277
+ ...splitChunks,
278
+ defaultSizeTypes: splitChunks.defaultSizeTypes
279
+ ? [...splitChunks.defaultSizeTypes]
280
+ : ["..."],
281
+ cacheGroups: cloneObject(splitChunks.cacheGroups)
269
282
  }
270
283
  ),
271
- optimization: nestedConfig(config.optimization, optimization => {
284
+ emitOnErrors:
285
+ optimization.noEmitOnErrors !== undefined
286
+ ? handledDeprecatedNoEmitOnErrors(
287
+ optimization.noEmitOnErrors,
288
+ optimization.emitOnErrors
289
+ )
290
+ : optimization.emitOnErrors
291
+ })),
292
+ output: nestedConfig(config.output, output => {
293
+ const { library } = output;
294
+ const libraryAsName = /** @type {LibraryName} */ (library);
295
+ const libraryBase =
296
+ typeof library === "object" &&
297
+ library &&
298
+ !Array.isArray(library) &&
299
+ "type" in library
300
+ ? library
301
+ : libraryAsName || output.libraryTarget
302
+ ? /** @type {LibraryOptions} */ ({
303
+ name: libraryAsName
304
+ })
305
+ : undefined;
306
+ /** @type {OutputNormalized} */
307
+ const result = {
308
+ assetModuleFilename: output.assetModuleFilename,
309
+ asyncChunks: output.asyncChunks,
310
+ charset: output.charset,
311
+ chunkFilename: output.chunkFilename,
312
+ chunkFormat: output.chunkFormat,
313
+ chunkLoading: output.chunkLoading,
314
+ chunkLoadingGlobal: output.chunkLoadingGlobal,
315
+ chunkLoadTimeout: output.chunkLoadTimeout,
316
+ cssFilename: output.cssFilename,
317
+ cssChunkFilename: output.cssChunkFilename,
318
+ cssHeadDataCompression: output.cssHeadDataCompression,
319
+ clean: output.clean,
320
+ compareBeforeEmit: output.compareBeforeEmit,
321
+ crossOriginLoading: output.crossOriginLoading,
322
+ devtoolFallbackModuleFilenameTemplate:
323
+ output.devtoolFallbackModuleFilenameTemplate,
324
+ devtoolModuleFilenameTemplate: output.devtoolModuleFilenameTemplate,
325
+ devtoolNamespace: output.devtoolNamespace,
326
+ environment: cloneObject(output.environment),
327
+ enabledChunkLoadingTypes: output.enabledChunkLoadingTypes
328
+ ? [...output.enabledChunkLoadingTypes]
329
+ : ["..."],
330
+ enabledLibraryTypes: output.enabledLibraryTypes
331
+ ? [...output.enabledLibraryTypes]
332
+ : ["..."],
333
+ enabledWasmLoadingTypes: output.enabledWasmLoadingTypes
334
+ ? [...output.enabledWasmLoadingTypes]
335
+ : ["..."],
336
+ filename: output.filename,
337
+ globalObject: output.globalObject,
338
+ hashDigest: output.hashDigest,
339
+ hashDigestLength: output.hashDigestLength,
340
+ hashFunction: output.hashFunction,
341
+ hashSalt: output.hashSalt,
342
+ hotUpdateChunkFilename: output.hotUpdateChunkFilename,
343
+ hotUpdateGlobal: output.hotUpdateGlobal,
344
+ hotUpdateMainFilename: output.hotUpdateMainFilename,
345
+ ignoreBrowserWarnings: output.ignoreBrowserWarnings,
346
+ iife: output.iife,
347
+ importFunctionName: output.importFunctionName,
348
+ importMetaName: output.importMetaName,
349
+ scriptType: output.scriptType,
350
+ library: libraryBase && {
351
+ type:
352
+ output.libraryTarget !== undefined
353
+ ? output.libraryTarget
354
+ : libraryBase.type,
355
+ auxiliaryComment:
356
+ output.auxiliaryComment !== undefined
357
+ ? output.auxiliaryComment
358
+ : libraryBase.auxiliaryComment,
359
+ amdContainer:
360
+ output.amdContainer !== undefined
361
+ ? output.amdContainer
362
+ : libraryBase.amdContainer,
363
+ export:
364
+ output.libraryExport !== undefined
365
+ ? output.libraryExport
366
+ : libraryBase.export,
367
+ name: libraryBase.name,
368
+ umdNamedDefine:
369
+ output.umdNamedDefine !== undefined
370
+ ? output.umdNamedDefine
371
+ : libraryBase.umdNamedDefine
372
+ },
373
+ module: output.module,
374
+ path: output.path,
375
+ pathinfo: output.pathinfo,
376
+ publicPath: output.publicPath,
377
+ sourceMapFilename: output.sourceMapFilename,
378
+ sourcePrefix: output.sourcePrefix,
379
+ strictModuleErrorHandling: output.strictModuleErrorHandling,
380
+ strictModuleExceptionHandling: output.strictModuleExceptionHandling,
381
+ trustedTypes: optionalNestedConfig(output.trustedTypes, trustedTypes => {
382
+ if (trustedTypes === true) return {};
383
+ if (typeof trustedTypes === "string")
384
+ return { policyName: trustedTypes };
385
+ return { ...trustedTypes };
386
+ }),
387
+ uniqueName: output.uniqueName,
388
+ wasmLoading: output.wasmLoading,
389
+ webassemblyModuleFilename: output.webassemblyModuleFilename,
390
+ workerPublicPath: output.workerPublicPath,
391
+ workerChunkLoading: output.workerChunkLoading,
392
+ workerWasmLoading: output.workerWasmLoading
393
+ };
394
+ return result;
395
+ }),
396
+ parallelism: config.parallelism,
397
+ performance: optionalNestedConfig(config.performance, performance => {
398
+ if (performance === false) return false;
399
+ return {
400
+ ...performance
401
+ };
402
+ }),
403
+ plugins: /** @type {Plugins} */ (nestedArray(config.plugins, p => [...p])),
404
+ profile: config.profile,
405
+ recordsInputPath:
406
+ config.recordsInputPath !== undefined
407
+ ? config.recordsInputPath
408
+ : config.recordsPath,
409
+ recordsOutputPath:
410
+ config.recordsOutputPath !== undefined
411
+ ? config.recordsOutputPath
412
+ : config.recordsPath,
413
+ resolve: nestedConfig(config.resolve, resolve => ({
414
+ ...resolve,
415
+ byDependency: keyedNestedConfig(resolve.byDependency, cloneObject)
416
+ })),
417
+ resolveLoader: cloneObject(config.resolveLoader),
418
+ snapshot: nestedConfig(config.snapshot, snapshot => ({
419
+ resolveBuildDependencies: optionalNestedConfig(
420
+ snapshot.resolveBuildDependencies,
421
+ resolveBuildDependencies => ({
422
+ timestamp: resolveBuildDependencies.timestamp,
423
+ hash: resolveBuildDependencies.hash
424
+ })
425
+ ),
426
+ buildDependencies: optionalNestedConfig(
427
+ snapshot.buildDependencies,
428
+ buildDependencies => ({
429
+ timestamp: buildDependencies.timestamp,
430
+ hash: buildDependencies.hash
431
+ })
432
+ ),
433
+ resolve: optionalNestedConfig(snapshot.resolve, resolve => ({
434
+ timestamp: resolve.timestamp,
435
+ hash: resolve.hash
436
+ })),
437
+ module: optionalNestedConfig(snapshot.module, module => ({
438
+ timestamp: module.timestamp,
439
+ hash: module.hash
440
+ })),
441
+ immutablePaths: optionalNestedArray(snapshot.immutablePaths, p => [...p]),
442
+ managedPaths: optionalNestedArray(snapshot.managedPaths, p => [...p]),
443
+ unmanagedPaths: optionalNestedArray(snapshot.unmanagedPaths, p => [...p])
444
+ })),
445
+ stats: nestedConfig(config.stats, stats => {
446
+ if (stats === false) {
272
447
  return {
273
- ...optimization,
274
- runtimeChunk: getNormalizedOptimizationRuntimeChunk(
275
- optimization.runtimeChunk
276
- ),
277
- splitChunks: nestedConfig(
278
- optimization.splitChunks,
279
- splitChunks =>
280
- splitChunks && {
281
- ...splitChunks,
282
- defaultSizeTypes: splitChunks.defaultSizeTypes
283
- ? [...splitChunks.defaultSizeTypes]
284
- : ["..."],
285
- cacheGroups: cloneObject(splitChunks.cacheGroups)
286
- }
287
- ),
288
- emitOnErrors:
289
- optimization.noEmitOnErrors !== undefined
290
- ? handledDeprecatedNoEmitOnErrors(
291
- optimization.noEmitOnErrors,
292
- optimization.emitOnErrors
293
- )
294
- : optimization.emitOnErrors
295
- };
296
- }),
297
- output: nestedConfig(config.output, output => {
298
- const { library } = output;
299
- const libraryAsName = /** @type {LibraryName} */ (library);
300
- const libraryBase =
301
- typeof library === "object" &&
302
- library &&
303
- !Array.isArray(library) &&
304
- "type" in library
305
- ? library
306
- : libraryAsName || output.libraryTarget
307
- ? /** @type {LibraryOptions} */ ({
308
- name: libraryAsName
309
- })
310
- : undefined;
311
- /** @type {OutputNormalized} */
312
- const result = {
313
- assetModuleFilename: output.assetModuleFilename,
314
- asyncChunks: output.asyncChunks,
315
- charset: output.charset,
316
- chunkFilename: output.chunkFilename,
317
- chunkFormat: output.chunkFormat,
318
- chunkLoading: output.chunkLoading,
319
- chunkLoadingGlobal: output.chunkLoadingGlobal,
320
- chunkLoadTimeout: output.chunkLoadTimeout,
321
- cssFilename: output.cssFilename,
322
- cssChunkFilename: output.cssChunkFilename,
323
- cssHeadDataCompression: output.cssHeadDataCompression,
324
- clean: output.clean,
325
- compareBeforeEmit: output.compareBeforeEmit,
326
- crossOriginLoading: output.crossOriginLoading,
327
- devtoolFallbackModuleFilenameTemplate:
328
- output.devtoolFallbackModuleFilenameTemplate,
329
- devtoolModuleFilenameTemplate: output.devtoolModuleFilenameTemplate,
330
- devtoolNamespace: output.devtoolNamespace,
331
- environment: cloneObject(output.environment),
332
- enabledChunkLoadingTypes: output.enabledChunkLoadingTypes
333
- ? [...output.enabledChunkLoadingTypes]
334
- : ["..."],
335
- enabledLibraryTypes: output.enabledLibraryTypes
336
- ? [...output.enabledLibraryTypes]
337
- : ["..."],
338
- enabledWasmLoadingTypes: output.enabledWasmLoadingTypes
339
- ? [...output.enabledWasmLoadingTypes]
340
- : ["..."],
341
- filename: output.filename,
342
- globalObject: output.globalObject,
343
- hashDigest: output.hashDigest,
344
- hashDigestLength: output.hashDigestLength,
345
- hashFunction: output.hashFunction,
346
- hashSalt: output.hashSalt,
347
- hotUpdateChunkFilename: output.hotUpdateChunkFilename,
348
- hotUpdateGlobal: output.hotUpdateGlobal,
349
- hotUpdateMainFilename: output.hotUpdateMainFilename,
350
- ignoreBrowserWarnings: output.ignoreBrowserWarnings,
351
- iife: output.iife,
352
- importFunctionName: output.importFunctionName,
353
- importMetaName: output.importMetaName,
354
- scriptType: output.scriptType,
355
- library: libraryBase && {
356
- type:
357
- output.libraryTarget !== undefined
358
- ? output.libraryTarget
359
- : libraryBase.type,
360
- auxiliaryComment:
361
- output.auxiliaryComment !== undefined
362
- ? output.auxiliaryComment
363
- : libraryBase.auxiliaryComment,
364
- amdContainer:
365
- output.amdContainer !== undefined
366
- ? output.amdContainer
367
- : libraryBase.amdContainer,
368
- export:
369
- output.libraryExport !== undefined
370
- ? output.libraryExport
371
- : libraryBase.export,
372
- name: libraryBase.name,
373
- umdNamedDefine:
374
- output.umdNamedDefine !== undefined
375
- ? output.umdNamedDefine
376
- : libraryBase.umdNamedDefine
377
- },
378
- module: output.module,
379
- path: output.path,
380
- pathinfo: output.pathinfo,
381
- publicPath: output.publicPath,
382
- sourceMapFilename: output.sourceMapFilename,
383
- sourcePrefix: output.sourcePrefix,
384
- strictModuleErrorHandling: output.strictModuleErrorHandling,
385
- strictModuleExceptionHandling: output.strictModuleExceptionHandling,
386
- trustedTypes: optionalNestedConfig(
387
- output.trustedTypes,
388
- trustedTypes => {
389
- if (trustedTypes === true) return {};
390
- if (typeof trustedTypes === "string")
391
- return { policyName: trustedTypes };
392
- return { ...trustedTypes };
393
- }
394
- ),
395
- uniqueName: output.uniqueName,
396
- wasmLoading: output.wasmLoading,
397
- webassemblyModuleFilename: output.webassemblyModuleFilename,
398
- workerPublicPath: output.workerPublicPath,
399
- workerChunkLoading: output.workerChunkLoading,
400
- workerWasmLoading: output.workerWasmLoading
448
+ preset: "none"
401
449
  };
402
- return result;
403
- }),
404
- parallelism: config.parallelism,
405
- performance: optionalNestedConfig(config.performance, performance => {
406
- if (performance === false) return false;
450
+ }
451
+ if (stats === true) {
407
452
  return {
408
- ...performance
453
+ preset: "normal"
409
454
  };
410
- }),
411
- plugins: /** @type {Plugins} */ (nestedArray(config.plugins, p => [...p])),
412
- profile: config.profile,
413
- recordsInputPath:
414
- config.recordsInputPath !== undefined
415
- ? config.recordsInputPath
416
- : config.recordsPath,
417
- recordsOutputPath:
418
- config.recordsOutputPath !== undefined
419
- ? config.recordsOutputPath
420
- : config.recordsPath,
421
- resolve: nestedConfig(config.resolve, resolve => ({
422
- ...resolve,
423
- byDependency: keyedNestedConfig(resolve.byDependency, cloneObject)
424
- })),
425
- resolveLoader: cloneObject(config.resolveLoader),
426
- snapshot: nestedConfig(config.snapshot, snapshot => ({
427
- resolveBuildDependencies: optionalNestedConfig(
428
- snapshot.resolveBuildDependencies,
429
- resolveBuildDependencies => ({
430
- timestamp: resolveBuildDependencies.timestamp,
431
- hash: resolveBuildDependencies.hash
432
- })
433
- ),
434
- buildDependencies: optionalNestedConfig(
435
- snapshot.buildDependencies,
436
- buildDependencies => ({
437
- timestamp: buildDependencies.timestamp,
438
- hash: buildDependencies.hash
439
- })
440
- ),
441
- resolve: optionalNestedConfig(snapshot.resolve, resolve => ({
442
- timestamp: resolve.timestamp,
443
- hash: resolve.hash
444
- })),
445
- module: optionalNestedConfig(snapshot.module, module => ({
446
- timestamp: module.timestamp,
447
- hash: module.hash
448
- })),
449
- immutablePaths: optionalNestedArray(snapshot.immutablePaths, p => [...p]),
450
- managedPaths: optionalNestedArray(snapshot.managedPaths, p => [...p]),
451
- unmanagedPaths: optionalNestedArray(snapshot.unmanagedPaths, p => [...p])
452
- })),
453
- stats: nestedConfig(config.stats, stats => {
454
- if (stats === false) {
455
- return {
456
- preset: "none"
457
- };
458
- }
459
- if (stats === true) {
460
- return {
461
- preset: "normal"
462
- };
463
- }
464
- if (typeof stats === "string") {
465
- return {
466
- preset: stats
467
- };
468
- }
455
+ }
456
+ if (typeof stats === "string") {
469
457
  return {
470
- ...stats
458
+ preset: stats
471
459
  };
472
- }),
473
- target: config.target,
474
- watch: config.watch,
475
- watchOptions: cloneObject(config.watchOptions)
476
- };
477
- };
460
+ }
461
+ return {
462
+ ...stats
463
+ };
464
+ }),
465
+ target: config.target,
466
+ watch: config.watch,
467
+ watchOptions: cloneObject(config.watchOptions)
468
+ });
478
469
 
479
470
  /**
480
471
  * @param {EntryStatic} entry static entry options
@@ -543,7 +534,7 @@ const getNormalizedEntryStatic = entry => {
543
534
  * @returns {OptimizationRuntimeChunkNormalized=} normalized runtimeChunk option
544
535
  */
545
536
  const getNormalizedOptimizationRuntimeChunk = runtimeChunk => {
546
- if (runtimeChunk === undefined) return undefined;
537
+ if (runtimeChunk === undefined) return;
547
538
  if (runtimeChunk === false) return false;
548
539
  if (runtimeChunk === "single") {
549
540
  return {
@@ -565,4 +556,4 @@ const getNormalizedOptimizationRuntimeChunk = runtimeChunk => {
565
556
  };
566
557
  };
567
558
 
568
- exports.getNormalizedWebpackOptions = getNormalizedWebpackOptions;
559
+ module.exports.getNormalizedWebpackOptions = getNormalizedWebpackOptions;