webpack 5.59.0 → 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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -0,0 +1,144 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { ConcatSource } = require("webpack-sources");
9
+ const ConcatenatedModule = require("../optimize/ConcatenatedModule");
10
+ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
11
+
12
+ /** @typedef {import("webpack-sources").Source} Source */
13
+ /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
14
+ /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
15
+ /** @typedef {import("../Chunk")} Chunk */
16
+ /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
17
+ /** @typedef {import("../Compiler")} Compiler */
18
+ /** @typedef {import("../Module")} Module */
19
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
20
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
21
+ /** @typedef {import("../util/Hash")} Hash */
22
+ /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
23
+
24
+ /**
25
+ * @typedef {object} ModernModuleLibraryPluginOptions
26
+ * @property {LibraryType} type
27
+ */
28
+
29
+ /**
30
+ * @typedef {object} ModernModuleLibraryPluginParsed
31
+ * @property {string} name
32
+ */
33
+
34
+ /**
35
+ * @typedef {ModernModuleLibraryPluginParsed} T
36
+ * @extends {AbstractLibraryPlugin<ModernModuleLibraryPluginParsed>}
37
+ */
38
+ class ModernModuleLibraryPlugin extends AbstractLibraryPlugin {
39
+ /**
40
+ * Apply the plugin
41
+ * @param {Compiler} compiler the compiler instance
42
+ * @returns {void}
43
+ */
44
+ apply(compiler) {
45
+ super.apply(compiler);
46
+
47
+ compiler.hooks.compilation.tap("ModernModuleLibraryPlugin", compilation => {
48
+ const { exportsDefinitions } =
49
+ ConcatenatedModule.getCompilationHooks(compilation);
50
+ exportsDefinitions.tap("ModernModuleLibraryPlugin", () => true);
51
+ });
52
+ }
53
+
54
+ /**
55
+ * @param {ModernModuleLibraryPluginOptions} options the plugin options
56
+ */
57
+ constructor(options) {
58
+ super({
59
+ pluginName: "ModernModuleLibraryPlugin",
60
+ type: options.type
61
+ });
62
+ }
63
+
64
+ /**
65
+ * @param {LibraryOptions} library normalized library option
66
+ * @returns {T | false} preprocess as needed by overriding
67
+ */
68
+ parseOptions(library) {
69
+ const { name } = library;
70
+ if (name) {
71
+ throw new Error(
72
+ `Library name must be unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
73
+ );
74
+ }
75
+ const _name = /** @type {string} */ (name);
76
+ return {
77
+ name: _name
78
+ };
79
+ }
80
+
81
+ /**
82
+ * @param {Source} source source
83
+ * @param {Module} module module
84
+ * @param {StartupRenderContext} renderContext render context
85
+ * @param {LibraryContext<T>} libraryContext context
86
+ * @returns {Source} source with library export
87
+ */
88
+ renderStartup(
89
+ source,
90
+ module,
91
+ { moduleGraph, chunk },
92
+ { options, compilation }
93
+ ) {
94
+ const result = new ConcatSource(source);
95
+ const exportsInfo = moduleGraph.getExportsInfo(module);
96
+ const definitions =
97
+ /** @type {BuildMeta} */
98
+ (module.buildMeta).exportsFinalName;
99
+ const exports = [];
100
+
101
+ for (const exportInfo of exportsInfo.orderedExports) {
102
+ let shouldContinue = false;
103
+ const reexport = exportInfo.findTarget(moduleGraph, _m => true);
104
+
105
+ if (reexport) {
106
+ const exp = moduleGraph.getExportsInfo(reexport.module);
107
+
108
+ for (const reexportInfo of exp.orderedExports) {
109
+ if (
110
+ !reexportInfo.provided &&
111
+ reexportInfo.name === /** @type {string[]} */ (reexport.export)[0]
112
+ ) {
113
+ shouldContinue = true;
114
+ }
115
+ }
116
+ }
117
+
118
+ if (shouldContinue) continue;
119
+
120
+ const webpackExportsProperty = exportInfo.getUsedName(
121
+ exportInfo.name,
122
+ chunk.runtime
123
+ );
124
+ const finalName =
125
+ definitions[
126
+ /** @type {string} */
127
+ (webpackExportsProperty)
128
+ ];
129
+ exports.push(
130
+ finalName === exportInfo.name
131
+ ? finalName
132
+ : `${finalName} as ${exportInfo.name}`
133
+ );
134
+ }
135
+
136
+ if (exports.length > 0) {
137
+ result.add(`export { ${exports.join(", ")} };\n`);
138
+ }
139
+
140
+ return result;
141
+ }
142
+ }
143
+
144
+ module.exports = ModernModuleLibraryPlugin;
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const { ConcatSource } = require("webpack-sources");
9
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
10
  const Template = require("../Template");
10
11
  const propertyAccess = require("../util/propertyAccess");
11
12
  const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
@@ -22,12 +23,12 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
22
23
  /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
23
24
 
24
25
  /**
25
- * @typedef {Object} ModuleLibraryPluginOptions
26
+ * @typedef {object} ModuleLibraryPluginOptions
26
27
  * @property {LibraryType} type
27
28
  */
28
29
 
29
30
  /**
30
- * @typedef {Object} ModuleLibraryPluginParsed
31
+ * @typedef {object} ModuleLibraryPluginParsed
31
32
  * @property {string} name
32
33
  */
33
34
 
@@ -57,8 +58,9 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
57
58
  `Library name must be unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
58
59
  );
59
60
  }
61
+ const _name = /** @type {string} */ (name);
60
62
  return {
61
- name: /** @type {string} */ (name)
63
+ name: _name
62
64
  };
63
65
  }
64
66
 
@@ -80,16 +82,19 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
80
82
  const exports = [];
81
83
  const isAsync = moduleGraph.isAsync(module);
82
84
  if (isAsync) {
83
- result.add(`__webpack_exports__ = await __webpack_exports__;\n`);
85
+ result.add(
86
+ `${RuntimeGlobals.exports} = await ${RuntimeGlobals.exports};\n`
87
+ );
84
88
  }
85
89
  for (const exportInfo of exportsInfo.orderedExports) {
86
90
  if (!exportInfo.provided) continue;
87
- const varName = `__webpack_exports__${Template.toIdentifier(
91
+ const varName = `${RuntimeGlobals.exports}${Template.toIdentifier(
88
92
  exportInfo.name
89
93
  )}`;
90
94
  result.add(
91
- `var ${varName} = __webpack_exports__${propertyAccess([
92
- exportInfo.getUsedName(exportInfo.name, chunk.runtime)
95
+ `var ${varName} = ${RuntimeGlobals.exports}${propertyAccess([
96
+ /** @type {string} */
97
+ (exportInfo.getUsedName(exportInfo.name, chunk.runtime))
93
98
  ])};\n`
94
99
  );
95
100
  exports.push(`${varName} as ${exportInfo.name}`);
@@ -23,12 +23,12 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
23
23
  /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
24
24
 
25
25
  /**
26
- * @typedef {Object} SystemLibraryPluginOptions
26
+ * @typedef {object} SystemLibraryPluginOptions
27
27
  * @property {LibraryType} type
28
28
  */
29
29
 
30
30
  /**
31
- * @typedef {Object} SystemLibraryPluginParsed
31
+ * @typedef {object} SystemLibraryPluginParsed
32
32
  * @property {string} name
33
33
  */
34
34
 
@@ -58,8 +58,9 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
58
58
  `System.js library name must be a simple string or unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
59
59
  );
60
60
  }
61
+ const _name = /** @type {string} */ (name);
61
62
  return {
62
- name: /** @type {string=} */ (name)
63
+ name: _name
63
64
  };
64
65
  }
65
66
 
@@ -106,6 +107,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
106
107
  .join("\n");
107
108
 
108
109
  // Define __esModule flag on all internal variables and helpers
110
+ /** @type {string[]} */
109
111
  const externalVarInitialization = [];
110
112
 
111
113
  // The system.register format requires an array of setter functions for externals.
@@ -186,7 +188,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
186
188
  .join(",\n")
187
189
  ),
188
190
  "],"
189
- ]);
191
+ ]);
190
192
 
191
193
  return new ConcatSource(
192
194
  Template.asString([
@@ -18,16 +18,20 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
18
18
  /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
19
19
  /** @typedef {import("../Compiler")} Compiler */
20
20
  /** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
21
+ /** @typedef {import("../ExternalModule").RequestRecord} RequestRecord */
21
22
  /** @typedef {import("../util/Hash")} Hash */
22
- /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
23
+ /**
24
+ * @template T
25
+ * @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>}
26
+ * LibraryContext<T>
27
+ */
23
28
 
24
29
  /**
25
30
  * @param {string[]} accessor the accessor to convert to path
26
31
  * @returns {string} the path
27
32
  */
28
- const accessorToObjectAccess = accessor => {
29
- return accessor.map(a => `[${JSON.stringify(a)}]`).join("");
30
- };
33
+ const accessorToObjectAccess = accessor =>
34
+ accessor.map(a => `[${JSON.stringify(a)}]`).join("");
31
35
 
32
36
  /**
33
37
  * @param {string|undefined} base the path prefix
@@ -53,13 +57,13 @@ const accessorAccess = (base, accessor, joinWith = ", ") => {
53
57
  /** @typedef {string | string[] | LibraryCustomUmdObject} UmdLibraryPluginName */
54
58
 
55
59
  /**
56
- * @typedef {Object} UmdLibraryPluginOptions
60
+ * @typedef {object} UmdLibraryPluginOptions
57
61
  * @property {LibraryType} type
58
62
  * @property {boolean=} optionalAmdExternalAsGlobal
59
63
  */
60
64
 
61
65
  /**
62
- * @typedef {Object} UmdLibraryPluginParsed
66
+ * @typedef {object} UmdLibraryPluginParsed
63
67
  * @property {string | string[]} name
64
68
  * @property {LibraryCustomUmdObject} names
65
69
  * @property {string | LibraryCustomUmdCommentObject} auxiliaryComment
@@ -148,57 +152,76 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
148
152
  requiredExternals = externals;
149
153
  }
150
154
 
151
- const replaceKeys = str => {
152
- return compilation.getPath(str, {
155
+ /**
156
+ * @param {string} str the string to replace
157
+ * @returns {string} the replaced keys
158
+ */
159
+ const replaceKeys = str =>
160
+ compilation.getPath(str, {
153
161
  chunk
154
162
  });
155
- };
156
163
 
157
- const externalsDepsArray = modules => {
158
- return `[${replaceKeys(
164
+ /**
165
+ * @param {ExternalModule[]} modules external modules
166
+ * @returns {string} result
167
+ */
168
+ const externalsDepsArray = modules =>
169
+ `[${replaceKeys(
159
170
  modules
160
171
  .map(m =>
161
172
  JSON.stringify(
162
- typeof m.request === "object" ? m.request.amd : m.request
173
+ typeof m.request === "object"
174
+ ? /** @type {RequestRecord} */
175
+ (m.request).amd
176
+ : m.request
163
177
  )
164
178
  )
165
179
  .join(", ")
166
180
  )}]`;
167
- };
168
181
 
169
- const externalsRootArray = modules => {
170
- return replaceKeys(
182
+ /**
183
+ * @param {ExternalModule[]} modules external modules
184
+ * @returns {string} result
185
+ */
186
+ const externalsRootArray = modules =>
187
+ replaceKeys(
171
188
  modules
172
189
  .map(m => {
173
190
  let request = m.request;
174
- if (typeof request === "object") request = request.root;
191
+ if (typeof request === "object")
192
+ request =
193
+ /** @type {RequestRecord} */
194
+ (request).root;
175
195
  return `root${accessorToObjectAccess([].concat(request))}`;
176
196
  })
177
197
  .join(", ")
178
198
  );
179
- };
180
199
 
181
- const externalsRequireArray = type => {
182
- return replaceKeys(
200
+ /**
201
+ * @param {string} type the type
202
+ * @returns {string} external require array
203
+ */
204
+ const externalsRequireArray = type =>
205
+ replaceKeys(
183
206
  externals
184
207
  .map(m => {
185
208
  let expr;
186
209
  let request = m.request;
187
210
  if (typeof request === "object") {
188
- request = request[type];
211
+ request =
212
+ /** @type {RequestRecord} */
213
+ (request)[type];
189
214
  }
190
215
  if (request === undefined) {
191
216
  throw new Error(
192
- "Missing external configuration for type:" + type
217
+ `Missing external configuration for type:${type}`
193
218
  );
194
219
  }
195
- if (Array.isArray(request)) {
196
- expr = `require(${JSON.stringify(
197
- request[0]
198
- )})${accessorToObjectAccess(request.slice(1))}`;
199
- } else {
200
- expr = `require(${JSON.stringify(request)})`;
201
- }
220
+ expr = Array.isArray(request)
221
+ ? `require(${JSON.stringify(
222
+ request[0]
223
+ )})${accessorToObjectAccess(request.slice(1))}`
224
+ : `require(${JSON.stringify(request)})`;
202
225
  if (m.isOptional(moduleGraph)) {
203
226
  expr = `(function webpackLoadOptionalExternalModule() { try { return ${expr}; } catch(e) {} }())`;
204
227
  }
@@ -206,10 +229,13 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
206
229
  })
207
230
  .join(", ")
208
231
  );
209
- };
210
232
 
211
- const externalsArguments = modules => {
212
- return modules
233
+ /**
234
+ * @param {ExternalModule[]} modules external modules
235
+ * @returns {string} arguments
236
+ */
237
+ const externalsArguments = modules =>
238
+ modules
213
239
  .map(
214
240
  m =>
215
241
  `__WEBPACK_EXTERNAL_MODULE_${Template.toIdentifier(
@@ -217,20 +243,24 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
217
243
  )}__`
218
244
  )
219
245
  .join(", ");
220
- };
221
246
 
222
- const libraryName = library => {
223
- return JSON.stringify(replaceKeys([].concat(library).pop()));
224
- };
247
+ /**
248
+ * @param {string| string[]} library library name
249
+ * @returns {string} stringified library name
250
+ */
251
+ const libraryName = library =>
252
+ JSON.stringify(
253
+ replaceKeys(/** @type {string[]} */ ([]).concat(library).pop())
254
+ );
225
255
 
226
256
  let amdFactory;
227
257
  if (optionalExternals.length > 0) {
228
258
  const wrapperArguments = externalsArguments(requiredExternals);
229
259
  const factoryArguments =
230
260
  requiredExternals.length > 0
231
- ? externalsArguments(requiredExternals) +
232
- ", " +
233
- externalsRootArray(optionalExternals)
261
+ ? `${externalsArguments(requiredExternals)}, ${externalsRootArray(
262
+ optionalExternals
263
+ )}`
234
264
  : externalsRootArray(optionalExternals);
235
265
  amdFactory =
236
266
  `function webpackLoadOptionalExternalModuleAmd(${wrapperArguments}) {\n` +
@@ -242,77 +272,66 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
242
272
 
243
273
  const { auxiliaryComment, namedDefine, names } = options;
244
274
 
275
+ /**
276
+ * @param {keyof LibraryCustomUmdCommentObject} type type
277
+ * @returns {string} comment
278
+ */
245
279
  const getAuxiliaryComment = type => {
246
280
  if (auxiliaryComment) {
247
281
  if (typeof auxiliaryComment === "string")
248
- return "\t//" + auxiliaryComment + "\n";
249
- if (auxiliaryComment[type])
250
- return "\t//" + auxiliaryComment[type] + "\n";
282
+ return `\t//${auxiliaryComment}\n`;
283
+ if (auxiliaryComment[type]) return `\t//${auxiliaryComment[type]}\n`;
251
284
  }
252
285
  return "";
253
286
  };
254
287
 
255
288
  return new ConcatSource(
256
289
  new OriginalSource(
257
- "(function webpackUniversalModuleDefinition(root, factory) {\n" +
258
- getAuxiliaryComment("commonjs2") +
259
- " if(typeof exports === 'object' && typeof module === 'object')\n" +
260
- " module.exports = factory(" +
261
- externalsRequireArray("commonjs2") +
262
- ");\n" +
263
- getAuxiliaryComment("amd") +
264
- " else if(typeof define === 'function' && define.amd)\n" +
265
- (requiredExternals.length > 0
266
- ? names.amd && namedDefine === true
267
- ? " define(" +
268
- libraryName(names.amd) +
269
- ", " +
270
- externalsDepsArray(requiredExternals) +
271
- ", " +
272
- amdFactory +
273
- ");\n"
274
- : " define(" +
275
- externalsDepsArray(requiredExternals) +
276
- ", " +
277
- amdFactory +
278
- ");\n"
279
- : names.amd && namedDefine === true
280
- ? " define(" +
281
- libraryName(names.amd) +
282
- ", [], " +
283
- amdFactory +
284
- ");\n"
285
- : " define([], " + amdFactory + ");\n") +
286
- (names.root || names.commonjs
287
- ? getAuxiliaryComment("commonjs") +
288
- " else if(typeof exports === 'object')\n" +
289
- " exports[" +
290
- libraryName(names.commonjs || names.root) +
291
- "] = factory(" +
292
- externalsRequireArray("commonjs") +
293
- ");\n" +
294
- getAuxiliaryComment("root") +
295
- " else\n" +
296
- " " +
297
- replaceKeys(
298
- accessorAccess("root", names.root || names.commonjs)
299
- ) +
300
- " = factory(" +
301
- externalsRootArray(externals) +
302
- ");\n"
303
- : " else {\n" +
304
- (externals.length > 0
305
- ? " var a = typeof exports === 'object' ? factory(" +
306
- externalsRequireArray("commonjs") +
307
- ") : factory(" +
308
- externalsRootArray(externals) +
309
- ");\n"
310
- : " var a = factory();\n") +
311
- " for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n" +
312
- " }\n") +
313
- `})(${
314
- runtimeTemplate.outputOptions.globalObject
315
- }, function(${externalsArguments(externals)}) {\nreturn `,
290
+ `(function webpackUniversalModuleDefinition(root, factory) {\n${getAuxiliaryComment(
291
+ "commonjs2"
292
+ )} if(typeof exports === 'object' && typeof module === 'object')\n` +
293
+ ` module.exports = factory(${externalsRequireArray(
294
+ "commonjs2"
295
+ )});\n${getAuxiliaryComment(
296
+ "amd"
297
+ )} else if(typeof define === 'function' && define.amd)\n${
298
+ requiredExternals.length > 0
299
+ ? names.amd && namedDefine === true
300
+ ? ` define(${libraryName(names.amd)}, ${externalsDepsArray(
301
+ requiredExternals
302
+ )}, ${amdFactory});\n`
303
+ : ` define(${externalsDepsArray(requiredExternals)}, ${
304
+ amdFactory
305
+ });\n`
306
+ : names.amd && namedDefine === true
307
+ ? ` define(${libraryName(names.amd)}, [], ${amdFactory});\n`
308
+ : ` define([], ${amdFactory});\n`
309
+ }${
310
+ names.root || names.commonjs
311
+ ? `${getAuxiliaryComment(
312
+ "commonjs"
313
+ )} else if(typeof exports === 'object')\n` +
314
+ ` exports[${libraryName(
315
+ names.commonjs || names.root
316
+ )}] = factory(${externalsRequireArray(
317
+ "commonjs"
318
+ )});\n${getAuxiliaryComment("root")} else\n` +
319
+ ` ${replaceKeys(
320
+ accessorAccess("root", names.root || names.commonjs)
321
+ )} = factory(${externalsRootArray(externals)});\n`
322
+ : ` else {\n${
323
+ externals.length > 0
324
+ ? ` var a = typeof exports === 'object' ? factory(${externalsRequireArray(
325
+ "commonjs"
326
+ )}) : factory(${externalsRootArray(externals)});\n`
327
+ : " var a = factory();\n"
328
+ } for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n` +
329
+ " }\n"
330
+ }})(${runtimeTemplate.outputOptions.globalObject}, ${
331
+ runtimeTemplate.supportsArrowFunction()
332
+ ? `(${externalsArguments(externals)}) =>`
333
+ : `function(${externalsArguments(externals)})`
334
+ } {\nreturn `,
316
335
  "webpack/universalModuleDefinition"
317
336
  ),
318
337
  source,