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
@@ -65,8 +65,6 @@ const getDefaultTarget = context => {
65
65
  * @property {boolean | null} asyncFunction async functions and await are available
66
66
  */
67
67
 
68
- ///** @typedef {PlatformTargetProperties | ApiTargetProperties | EcmaTargetProperties | PlatformTargetProperties & ApiTargetProperties | PlatformTargetProperties & EcmaTargetProperties | ApiTargetProperties & EcmaTargetProperties} TargetProperties */
69
-
70
68
  /**
71
69
  * @template T
72
70
  * @typedef {{ [P in keyof T]?: never }} Never<T>
@@ -90,12 +88,11 @@ const versionDependent = (major, minor) => {
90
88
  return () => /** @type {undefined} */ (undefined);
91
89
  }
92
90
  /** @type {number} */
93
- const nMajor = +major;
91
+ const nMajor = Number(major);
94
92
  /** @type {number} */
95
- const nMinor = minor ? +minor : 0;
96
- return (vMajor, vMinor = 0) => {
97
- return nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
98
- };
93
+ const nMinor = minor ? Number(minor) : 0;
94
+ return (vMajor, vMinor = 0) =>
95
+ nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
99
96
  };
100
97
 
101
98
  /** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
@@ -124,47 +121,43 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
124
121
  "web",
125
122
  "Web browser.",
126
123
  /^web$/,
127
- () => {
128
- return {
129
- web: true,
130
- browser: true,
131
- webworker: null,
132
- node: false,
133
- electron: false,
134
- nwjs: false,
124
+ () => ({
125
+ web: true,
126
+ browser: true,
127
+ webworker: null,
128
+ node: false,
129
+ electron: false,
130
+ nwjs: false,
135
131
 
136
- document: true,
137
- importScriptsInWorker: true,
138
- fetchWasm: true,
139
- nodeBuiltins: false,
140
- importScripts: false,
141
- require: false,
142
- global: false
143
- };
144
- }
132
+ document: true,
133
+ importScriptsInWorker: true,
134
+ fetchWasm: true,
135
+ nodeBuiltins: false,
136
+ importScripts: false,
137
+ require: false,
138
+ global: false
139
+ })
145
140
  ],
146
141
  [
147
142
  "webworker",
148
143
  "Web Worker, SharedWorker or Service Worker.",
149
144
  /^webworker$/,
150
- () => {
151
- return {
152
- web: true,
153
- browser: true,
154
- webworker: true,
155
- node: false,
156
- electron: false,
157
- nwjs: false,
145
+ () => ({
146
+ web: true,
147
+ browser: true,
148
+ webworker: true,
149
+ node: false,
150
+ electron: false,
151
+ nwjs: false,
158
152
 
159
- importScripts: true,
160
- importScriptsInWorker: true,
161
- fetchWasm: true,
162
- nodeBuiltins: false,
163
- require: false,
164
- document: false,
165
- global: false
166
- };
167
- }
153
+ importScripts: true,
154
+ importScriptsInWorker: true,
155
+ fetchWasm: true,
156
+ nodeBuiltins: false,
157
+ require: false,
158
+ document: false,
159
+ global: false
160
+ })
168
161
  ],
169
162
  [
170
163
  "[async-]node[X[.Y]]",
@@ -184,7 +177,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
184
177
  require: !asyncFlag,
185
178
  nodeBuiltins: true,
186
179
  // v16.0.0, v14.18.0
187
- nodePrefixForCoreModules: +major < 15 ? v(14, 18) : v(16),
180
+ nodePrefixForCoreModules: Number(major) < 15 ? v(14, 18) : v(16),
188
181
  global: true,
189
182
  document: false,
190
183
  fetchWasm: false,
@@ -295,7 +288,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
295
288
  "EcmaScript in this version. Examples: es2020, es5.",
296
289
  /^es(\d+)$/,
297
290
  version => {
298
- let v = +version;
291
+ let v = Number(version);
299
292
  if (v < 1000) v = v + 2009;
300
293
  return {
301
294
  const: v >= 2015,
@@ -366,7 +359,7 @@ const mergeTargetProperties = targetProperties => {
366
359
  }
367
360
  if (hasTrue || hasFalse)
368
361
  /** @type {TargetProperties} */
369
- (result)[key] = hasFalse && hasTrue ? null : hasTrue ? true : false;
362
+ (result)[key] = hasFalse && hasTrue ? null : Boolean(hasTrue);
370
363
  }
371
364
  return /** @type {TargetProperties} */ (result);
372
365
  };
@@ -376,12 +369,9 @@ const mergeTargetProperties = targetProperties => {
376
369
  * @param {string} context the context directory
377
370
  * @returns {TargetProperties} target properties
378
371
  */
379
- const getTargetsProperties = (targets, context) => {
380
- return mergeTargetProperties(
381
- targets.map(t => getTargetProperties(t, context))
382
- );
383
- };
372
+ const getTargetsProperties = (targets, context) =>
373
+ mergeTargetProperties(targets.map(t => getTargetProperties(t, context)));
384
374
 
385
- exports.getDefaultTarget = getDefaultTarget;
386
- exports.getTargetProperties = getTargetProperties;
387
- exports.getTargetsProperties = getTargetsProperties;
375
+ module.exports.getDefaultTarget = getDefaultTarget;
376
+ module.exports.getTargetProperties = getTargetProperties;
377
+ module.exports.getTargetsProperties = getTargetsProperties;
@@ -77,7 +77,7 @@ class ContainerEntryModule extends Module {
77
77
  * @returns {string} a user readable identifier of the module
78
78
  */
79
79
  readableIdentifier(requestShortener) {
80
- return `container entry`;
80
+ return "container entry";
81
81
  }
82
82
 
83
83
  /**
@@ -205,7 +205,7 @@ class ContainerEntryModule extends Module {
205
205
  }
206
206
 
207
207
  const source = Template.asString([
208
- `var moduleMap = {`,
208
+ "var moduleMap = {",
209
209
  Template.indent(getters.join(",\n")),
210
210
  "};",
211
211
  `var get = ${runtimeTemplate.basicFunction("module, getScope", [
@@ -76,7 +76,7 @@ class ContainerPlugin {
76
76
  const dep = new ContainerEntryDependency(name, exposes, shareScope);
77
77
  dep.loc = { name };
78
78
  compilation.addEntry(
79
- compilation.options.context,
79
+ /** @type {string} */ (compilation.options.context),
80
80
  dep,
81
81
  {
82
82
  name,
@@ -12,6 +12,7 @@ const Template = require("../Template");
12
12
  /** @typedef {import("../Chunk")} Chunk */
13
13
  /** @typedef {import("../Chunk").ChunkId} ChunkId */
14
14
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
+ /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
15
16
  /** @typedef {import("../Compilation")} Compilation */
16
17
  /** @typedef {import("./RemoteModule")} RemoteModule */
17
18
 
@@ -29,7 +30,7 @@ class RemoteRuntimeModule extends RuntimeModule {
29
30
  const { runtimeTemplate, moduleGraph } = compilation;
30
31
  /** @type {Record<ChunkId, (string | number)[]>} */
31
32
  const chunkToRemotesMapping = {};
32
- /** @type {Record<string | number, [string, string, string | number | null]>} */
33
+ /** @type {Record<ModuleId, [string, string, string | number | null]>} */
33
34
  const idToExternalAndNameMapping = {};
34
35
  for (const chunk of /** @type {Chunk} */ (this.chunk).getAllAsyncChunks()) {
35
36
  const modules = chunkGraph.getChunkModulesIterableBySourceType(
@@ -37,19 +38,21 @@ class RemoteRuntimeModule extends RuntimeModule {
37
38
  "remote"
38
39
  );
39
40
  if (!modules) continue;
40
- /** @type {(string | number)[]} */
41
+ /** @type {ModuleId[]} */
41
42
  const remotes = (chunkToRemotesMapping[
42
- /** @type {ChunkId} */ (chunk.id)
43
+ /** @type {ChunkId} */
44
+ (chunk.id)
43
45
  ] = []);
44
46
  for (const m of modules) {
45
47
  const module = /** @type {RemoteModule} */ (m);
46
48
  const name = module.internalRequest;
47
- const id = chunkGraph.getModuleId(module);
49
+ const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
48
50
  const shareScope = module.shareScope;
49
51
  const dep = module.dependencies[0];
50
52
  const externalModule = moduleGraph.getModule(dep);
51
53
  const externalModuleId =
52
- externalModule && chunkGraph.getModuleId(externalModule);
54
+ /** @type {ModuleId} */
55
+ (externalModule && chunkGraph.getModuleId(externalModule));
53
56
  remotes.push(id);
54
57
  idToExternalAndNameMapping[id] = [shareScope, name, externalModuleId];
55
58
  }
@@ -76,7 +79,7 @@ class RemoteRuntimeModule extends RuntimeModule {
76
79
  "var data = idToExternalAndNameMapping[id];",
77
80
  "if(getScope.indexOf(data) >= 0) return;",
78
81
  "getScope.push(data);",
79
- `if(data.p) return promises.push(data.p);`,
82
+ "if(data.p) return promises.push(data.p);",
80
83
  `var onError = ${runtimeTemplate.basicFunction("error", [
81
84
  'if(!error) error = new Error("Container missing");',
82
85
  'if(typeof error.message === "string")',
@@ -100,7 +103,7 @@ class RemoteRuntimeModule extends RuntimeModule {
100
103
  "next(result, d)",
101
104
  "result"
102
105
  )}, onError);`,
103
- `if(first) promises.push(data.p = p); else return p;`
106
+ "if(first) promises.push(data.p = p); else return p;"
104
107
  ]),
105
108
  "} else {",
106
109
  Template.indent(["return next(promise, d, first);"]),
@@ -116,7 +119,7 @@ class RemoteRuntimeModule extends RuntimeModule {
116
119
  "external, _, first"
117
120
  )};`,
118
121
  `var onInitialized = ${runtimeTemplate.returningFunction(
119
- `handleFunction(external.get, data[1], getScope, 0, onFactory, first)`,
122
+ "handleFunction(external.get, data[1], getScope, 0, onFactory, first)",
120
123
  "_, external, first"
121
124
  )};`,
122
125
  `var onFactory = ${runtimeTemplate.basicFunction("factory", [
@@ -5,7 +5,15 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @template T @typedef {(string | Record<string, string | string[] | T>)[] | Record<string, string | string[] | T>} ContainerOptionsFormat */
8
+ /**
9
+ * @template T
10
+ * @typedef {Record<string, string | string[] | T>} Item
11
+ */
12
+
13
+ /**
14
+ * @template T
15
+ * @typedef {(string | Item<T>)[] | Item<T>} ContainerOptionsFormat
16
+ */
9
17
 
10
18
  /**
11
19
  * @template T
@@ -17,6 +25,9 @@
17
25
  * @returns {void}
18
26
  */
19
27
  const process = (options, normalizeSimple, normalizeOptions, fn) => {
28
+ /**
29
+ * @param {(string | Item<T>)[]} items items
30
+ */
20
31
  const array = items => {
21
32
  for (const item of items) {
22
33
  if (typeof item === "string") {
@@ -28,6 +39,9 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
28
39
  }
29
40
  }
30
41
  };
42
+ /**
43
+ * @param {Item<T>} obj an object
44
+ */
31
45
  const object = obj => {
32
46
  for (const [key, value] of Object.entries(obj)) {
33
47
  if (typeof value === "string" || Array.isArray(value)) {
@@ -38,7 +52,7 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
38
52
  }
39
53
  };
40
54
  if (!options) {
41
- return;
55
+ // Do nothing
42
56
  } else if (Array.isArray(options)) {
43
57
  array(options);
44
58
  } else if (typeof options === "object") {
@@ -87,5 +101,5 @@ const scope = (scope, options) => {
87
101
  return obj;
88
102
  };
89
103
 
90
- exports.parseOptions = parseOptions;
91
- exports.scope = scope;
104
+ module.exports.parseOptions = parseOptions;
105
+ module.exports.scope = scope;
@@ -10,7 +10,6 @@ const { UsageState } = require("../ExportsInfo");
10
10
  const Generator = require("../Generator");
11
11
  const RuntimeGlobals = require("../RuntimeGlobals");
12
12
  const Template = require("../Template");
13
- const { cssExportConvention } = require("../util/conventions");
14
13
 
15
14
  /** @typedef {import("webpack-sources").Source} Source */
16
15
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
@@ -94,7 +93,7 @@ class CssExportsGenerator extends Generator {
94
93
  chunkGraph: generateContext.chunkGraph,
95
94
  module,
96
95
  runtime: generateContext.runtime,
97
- runtimeRequirements: runtimeRequirements,
96
+ runtimeRequirements,
98
97
  concatenationScope: generateContext.concatenationScope,
99
98
  codeGenerationResults: generateContext.codeGenerationResults,
100
99
  initFragments,
@@ -123,58 +122,56 @@ class CssExportsGenerator extends Generator {
123
122
  const template = generateContext.dependencyTemplates.get(constructor);
124
123
  if (!template) {
125
124
  throw new Error(
126
- "No template for dependency: " + dependency.constructor.name
125
+ `No template for dependency: ${dependency.constructor.name}`
127
126
  );
128
127
  }
129
128
 
130
129
  template.apply(dependency, source, templateContext);
131
130
  };
132
- module.dependencies.forEach(handleDependency);
131
+
132
+ for (const dependency of module.dependencies) {
133
+ handleDependency(dependency);
134
+ }
133
135
 
134
136
  if (generateContext.concatenationScope) {
135
137
  const source = new ConcatSource();
136
138
  const usedIdentifiers = new Set();
137
139
  for (const [name, v] of cssExportsData.exports) {
138
- for (let k of cssExportConvention(name, this.convention)) {
139
- let identifier = Template.toIdentifier(k);
140
- let i = 0;
141
- while (usedIdentifiers.has(identifier)) {
142
- identifier = Template.toIdentifier(k + i);
143
- }
144
- usedIdentifiers.add(identifier);
145
- generateContext.concatenationScope.registerExport(k, identifier);
146
- source.add(
147
- `${
148
- generateContext.runtimeTemplate.supportsConst() ? "const" : "var"
149
- } ${identifier} = ${JSON.stringify(v)};\n`
150
- );
140
+ let identifier = Template.toIdentifier(name);
141
+ const i = 0;
142
+ while (usedIdentifiers.has(identifier)) {
143
+ identifier = Template.toIdentifier(name + i);
151
144
  }
152
- }
153
- return source;
154
- } else {
155
- const needNsObj =
156
- this.esModule &&
157
- generateContext.moduleGraph
158
- .getExportsInfo(module)
159
- .otherExportsInfo.getUsed(generateContext.runtime) !==
160
- UsageState.Unused;
161
- if (needNsObj) {
162
- generateContext.runtimeRequirements.add(
163
- RuntimeGlobals.makeNamespaceObject
145
+ usedIdentifiers.add(identifier);
146
+ generateContext.concatenationScope.registerExport(name, identifier);
147
+ source.add(
148
+ `${
149
+ generateContext.runtimeTemplate.supportsConst() ? "const" : "var"
150
+ } ${identifier} = ${JSON.stringify(v)};\n`
164
151
  );
165
152
  }
166
- const newExports = [];
167
- for (let [k, v] of cssExportsData.exports) {
168
- for (let name of cssExportConvention(k, this.convention)) {
169
- newExports.push(`\t${JSON.stringify(name)}: ${JSON.stringify(v)}`);
170
- }
171
- }
172
- return new RawSource(
173
- `${needNsObj ? `${RuntimeGlobals.makeNamespaceObject}(` : ""}${
174
- module.moduleArgument
175
- }.exports = {\n${newExports.join(",\n")}\n}${needNsObj ? ")" : ""};`
153
+ return source;
154
+ }
155
+ const needNsObj =
156
+ this.esModule &&
157
+ generateContext.moduleGraph
158
+ .getExportsInfo(module)
159
+ .otherExportsInfo.getUsed(generateContext.runtime) !==
160
+ UsageState.Unused;
161
+ if (needNsObj) {
162
+ generateContext.runtimeRequirements.add(
163
+ RuntimeGlobals.makeNamespaceObject
176
164
  );
177
165
  }
166
+ const exports = [];
167
+ for (const [name, v] of cssExportsData.exports) {
168
+ exports.push(`\t${JSON.stringify(name)}: ${JSON.stringify(v)}`);
169
+ }
170
+ return new RawSource(
171
+ `${needNsObj ? `${RuntimeGlobals.makeNamespaceObject}(` : ""}${
172
+ module.moduleArgument
173
+ }.exports = {\n${exports.join(",\n")}\n}${needNsObj ? ")" : ""};`
174
+ );
178
175
  }
179
176
 
180
177
  /**
@@ -198,7 +195,9 @@ class CssExportsGenerator extends Generator {
198
195
  * @param {Hash} hash hash that will be modified
199
196
  * @param {UpdateHashContext} updateHashContext context for updating hash
200
197
  */
201
- updateHash(hash, { module }) {}
198
+ updateHash(hash, { module }) {
199
+ hash.update(this.esModule.toString());
200
+ }
202
201
  }
203
202
 
204
203
  module.exports = CssExportsGenerator;
@@ -9,7 +9,6 @@ const { ReplaceSource } = require("webpack-sources");
9
9
  const Generator = require("../Generator");
10
10
  const InitFragment = require("../InitFragment");
11
11
  const RuntimeGlobals = require("../RuntimeGlobals");
12
- const { cssExportConvention } = require("../util/conventions");
13
12
 
14
13
  /** @typedef {import("webpack-sources").Source} Source */
15
14
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
@@ -96,25 +95,21 @@ class CssGenerator extends Generator {
96
95
  const template = generateContext.dependencyTemplates.get(constructor);
97
96
  if (!template) {
98
97
  throw new Error(
99
- "No template for dependency: " + dependency.constructor.name
98
+ `No template for dependency: ${dependency.constructor.name}`
100
99
  );
101
100
  }
102
101
 
103
102
  template.apply(dependency, source, templateContext);
104
103
  };
105
- module.dependencies.forEach(handleDependency);
106
- if (module.presentationalDependencies !== undefined)
107
- module.presentationalDependencies.forEach(handleDependency);
108
-
109
- if (cssExportsData.exports.size > 0) {
110
- const newExports = new Map();
111
- for (let [name, v] of cssExportsData.exports) {
112
- for (let newName of cssExportConvention(name, this.convention)) {
113
- newExports.set(newName, v);
114
- }
104
+ for (const dependency of module.dependencies) {
105
+ handleDependency(dependency);
106
+ }
107
+ if (module.presentationalDependencies !== undefined) {
108
+ for (const dependency of module.presentationalDependencies) {
109
+ handleDependency(dependency);
115
110
  }
116
- cssExportsData.exports = newExports;
117
111
  }
112
+
118
113
  const data = generateContext.getData();
119
114
  data.set("css-exports", cssExportsData);
120
115
 
@@ -148,7 +143,9 @@ class CssGenerator extends Generator {
148
143
  * @param {Hash} hash hash that will be modified
149
144
  * @param {UpdateHashContext} updateHashContext context for updating hash
150
145
  */
151
- updateHash(hash, { module }) {}
146
+ updateHash(hash, { module }) {
147
+ hash.update(this.esModule.toString());
148
+ }
152
149
  }
153
150
 
154
151
  module.exports = CssGenerator;
@@ -86,7 +86,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
86
86
  * @returns {boolean} true, if the chunk has css
87
87
  */
88
88
  (chunk, chunkGraph) =>
89
- !!chunkGraph.getChunkModulesIterableBySourceType(chunk, "css")
89
+ Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, "css"))
90
90
  );
91
91
  const hasCssMatcher = compileBooleanMatcher(conditionMap);
92
92
 
@@ -210,7 +210,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
210
210
  Template.indent([
211
211
  "var style = cssRules[j--].style;",
212
212
  "if(!style) continue;",
213
- `data = style.getPropertyValue(name);`
213
+ "data = style.getPropertyValue(name);"
214
214
  ]),
215
215
  "}"
216
216
  ]),
@@ -224,7 +224,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
224
224
  withCompression
225
225
  ? Template.asString([
226
226
  // LZW decode
227
- `var map = {}, char = data[0], oldPhrase = char, decoded = char, code = 256, maxCode = ${"\uffff".charCodeAt(
227
+ `var map = {}, char = data[0], oldPhrase = char, decoded = char, code = 256, maxCode = ${"\uFFFF".charCodeAt(
228
228
  0
229
229
  )}, phrase;`,
230
230
  "for (i = 1; i < data.length; i++) {",
@@ -255,12 +255,12 @@ class CssLoadingRuntimeModule extends RuntimeModule {
255
255
  ","
256
256
  )}) { token = token.replace(/^_/, ""); target[token] = (${runtimeTemplate.basicFunction(
257
257
  "exports, module",
258
- `module.exports = exports;`
258
+ "module.exports = exports;"
259
259
  )}).bind(null, exports); ${
260
260
  withHmr ? "moduleIds.push(token); " : ""
261
261
  }token = ""; token2 = ""; exports = {}; }`,
262
262
  `else if(cc == ${cc("\\")}) { token += data[++i] }`,
263
- `else { token += data[i]; }`
263
+ "else { token += data[i]; }"
264
264
  ]),
265
265
  "}",
266
266
  `${
@@ -271,9 +271,9 @@ class CssLoadingRuntimeModule extends RuntimeModule {
271
271
  )}`,
272
272
  'var loadingAttribute = "data-webpack-loading";',
273
273
  `var loadStylesheet = ${runtimeTemplate.basicFunction(
274
- "chunkId, url, done" +
275
- (withHmr ? ", hmr" : "") +
276
- (withFetchPriority ? ", fetchPriority" : ""),
274
+ `chunkId, url, done${withHmr ? ", hmr" : ""}${
275
+ withFetchPriority ? ", fetchPriority" : ""
276
+ }`,
277
277
  [
278
278
  'var link, needAttach, key = "chunk-" + chunkId;',
279
279
  withHmr ? "if(!hmr) {" : "",
@@ -360,7 +360,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
360
360
  Template.indent([
361
361
  "// setup Promise in chunk cache",
362
362
  `var promise = new Promise(${runtimeTemplate.expressionFunction(
363
- `installedChunkData = installedChunks[chunkId] = [resolve, reject]`,
363
+ "installedChunkData = installedChunks[chunkId] = [resolve, reject]",
364
364
  "resolve, reject"
365
365
  )});`,
366
366
  "promises.push(installedChunkData[2] = promise);",
@@ -516,7 +516,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
516
516
  "}",
517
517
  "while(newTags.length) {",
518
518
  Template.indent([
519
- `var info = newTags.pop();`,
519
+ "var info = newTags.pop();",
520
520
  `var chunkModuleIds = loadCssChunkData(${RuntimeGlobals.moduleFactories}, info[1], info[0]);`,
521
521
  `chunkModuleIds.forEach(${runtimeTemplate.expressionFunction(
522
522
  "moduleIds.push(id)",