webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -17,8 +17,10 @@ const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin")
17
17
  /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
18
18
  /** @typedef {import("../Compiler")} Compiler */
19
19
  /** @typedef {import("../Module")} Module */
20
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
20
21
  /** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
21
22
  /** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
23
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
22
24
  /** @typedef {import("../util/Hash")} Hash */
23
25
 
24
26
  const COMMON_LIBRARY_NAME_MESSAGE =
@@ -32,14 +34,18 @@ const COMMON_LIBRARY_NAME_MESSAGE =
32
34
  * @property {T} options
33
35
  */
34
36
 
37
+ /**
38
+ * @typedef {object} AbstractLibraryPluginOptions
39
+ * @property {string} pluginName name of the plugin
40
+ * @property {LibraryType} type used library type
41
+ */
42
+
35
43
  /**
36
44
  * @template T
37
45
  */
38
46
  class AbstractLibraryPlugin {
39
47
  /**
40
- * @param {object} options options
41
- * @param {string} options.pluginName name of the plugin
42
- * @param {LibraryType} options.type used library type
48
+ * @param {AbstractLibraryPluginOptions} options options
43
49
  */
44
50
  constructor({ pluginName, type }) {
45
51
  this._pluginName = pluginName;
@@ -54,7 +60,7 @@ class AbstractLibraryPlugin {
54
60
  */
55
61
  apply(compiler) {
56
62
  const { _pluginName } = this;
57
- compiler.hooks.thisCompilation.tap(_pluginName, compilation => {
63
+ compiler.hooks.thisCompilation.tap(_pluginName, (compilation) => {
58
64
  compilation.hooks.finishModules.tap(
59
65
  { name: _pluginName, stage: 10 },
60
66
  () => {
@@ -89,11 +95,12 @@ class AbstractLibraryPlugin {
89
95
 
90
96
  /**
91
97
  * @param {Chunk} chunk chunk
92
- * @returns {TODO} options for the chunk
98
+ * @returns {T | false} options for the chunk
93
99
  */
94
- const getOptionsForChunk = chunk => {
95
- if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0)
100
+ const getOptionsForChunk = (chunk) => {
101
+ if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0) {
96
102
  return false;
103
+ }
97
104
  const options = chunk.getEntryOptions();
98
105
  const library = options && options.library;
99
106
  return this._parseOptionsCached(
@@ -157,7 +164,7 @@ class AbstractLibraryPlugin {
157
164
  this.strictRuntimeBailout !==
158
165
  AbstractLibraryPlugin.prototype.strictRuntimeBailout
159
166
  ) {
160
- hooks.strictRuntimeBailout.tap(_pluginName, renderContext => {
167
+ hooks.strictRuntimeBailout.tap(_pluginName, (renderContext) => {
161
168
  const options = getOptionsForChunk(renderContext.chunk);
162
169
  if (options === false) return;
163
170
  return this.strictRuntimeBailout(renderContext, {
@@ -168,6 +175,20 @@ class AbstractLibraryPlugin {
168
175
  });
169
176
  }
170
177
 
178
+ if (
179
+ this.renderModuleContent !==
180
+ AbstractLibraryPlugin.prototype.renderModuleContent
181
+ ) {
182
+ hooks.renderModuleContent.tap(
183
+ _pluginName,
184
+ (source, module, renderContext) =>
185
+ this.renderModuleContent(source, module, renderContext, {
186
+ compilation,
187
+ chunkGraph: compilation.chunkGraph
188
+ })
189
+ );
190
+ }
191
+
171
192
  if (
172
193
  this.renderStartup !== AbstractLibraryPlugin.prototype.renderStartup
173
194
  ) {
@@ -219,6 +240,7 @@ class AbstractLibraryPlugin {
219
240
  */
220
241
  parseOptions(library) {
221
242
  const AbstractMethodError = require("../AbstractMethodError");
243
+
222
244
  throw new AbstractMethodError();
223
245
  }
224
246
 
@@ -251,13 +273,14 @@ class AbstractLibraryPlugin {
251
273
 
252
274
  /**
253
275
  * @param {Chunk} chunk the chunk
254
- * @param {Set<string>} set runtime requirements
276
+ * @param {RuntimeRequirements} set runtime requirements
255
277
  * @param {LibraryContext<T>} libraryContext context
256
278
  * @returns {void}
257
279
  */
258
280
  runtimeRequirements(chunk, set, libraryContext) {
259
- if (this.render !== AbstractLibraryPlugin.prototype.render)
281
+ if (this.render !== AbstractLibraryPlugin.prototype.render) {
260
282
  set.add(RuntimeGlobals.returnExportsFromRuntime);
283
+ }
261
284
  }
262
285
 
263
286
  /**
@@ -281,6 +304,17 @@ class AbstractLibraryPlugin {
281
304
  return source;
282
305
  }
283
306
 
307
+ /**
308
+ * @param {Source} source source
309
+ * @param {Module} module module
310
+ * @param {ModuleRenderContext} renderContext render context
311
+ * @param {Omit<LibraryContext<T>, "options">} libraryContext context
312
+ * @returns {Source} source with library export
313
+ */
314
+ renderModuleContent(source, module, renderContext, libraryContext) {
315
+ return source;
316
+ }
317
+
284
318
  /**
285
319
  * @param {Chunk} chunk the chunk
286
320
  * @param {Hash} hash hash
@@ -298,4 +332,5 @@ class AbstractLibraryPlugin {
298
332
  }
299
333
 
300
334
  AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE = COMMON_LIBRARY_NAME_MESSAGE;
335
+
301
336
  module.exports = AbstractLibraryPlugin;
@@ -15,10 +15,12 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
15
15
  /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
16
16
  /** @typedef {import("../Chunk")} Chunk */
17
17
  /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
18
- /** @typedef {import("../Compiler")} Compiler */
19
18
  /** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
20
19
  /** @typedef {import("../util/Hash")} Hash */
21
- /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
20
+ /**
21
+ * @template T
22
+ * @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
23
+ */
22
24
 
23
25
  /**
24
26
  * @typedef {object} AmdLibraryPluginOptions
@@ -85,13 +87,13 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
85
87
  const modules = chunkGraph
86
88
  .getChunkModules(chunk)
87
89
  .filter(
88
- m =>
90
+ (m) =>
89
91
  m instanceof ExternalModule &&
90
92
  (m.externalType === "amd" || m.externalType === "amd-require")
91
93
  );
92
94
  const externals = /** @type {ExternalModule[]} */ (modules);
93
95
  const externalsDepsArray = JSON.stringify(
94
- externals.map(m =>
96
+ externals.map((m) =>
95
97
  typeof m.request === "object" && !Array.isArray(m.request)
96
98
  ? m.request.amd
97
99
  : m.request
@@ -99,7 +101,7 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
99
101
  );
100
102
  const externalsArguments = externals
101
103
  .map(
102
- m =>
104
+ (m) =>
103
105
  `__WEBPACK_EXTERNAL_MODULE_${Template.toIdentifier(
104
106
  `${chunkGraph.getModuleId(m)}`
105
107
  )}__`
@@ -16,15 +16,21 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
16
16
  /** @typedef {import("webpack-sources").Source} Source */
17
17
  /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
18
18
  /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
19
+ /** @typedef {import("../../declarations/WebpackOptions").LibraryExport} LibraryExport */
19
20
  /** @typedef {import("../Chunk")} Chunk */
20
21
  /** @typedef {import("../Compilation")} Compilation */
21
22
  /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
22
- /** @typedef {import("../Compiler")} Compiler */
23
23
  /** @typedef {import("../Module")} Module */
24
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
25
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
24
26
  /** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
25
27
  /** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
26
28
  /** @typedef {import("../util/Hash")} Hash */
27
- /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
29
+
30
+ /**
31
+ * @template T
32
+ * @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
33
+ */
28
34
 
29
35
  const KEYWORD_REGEX =
30
36
  /^(await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|super|switch|static|this|throw|try|true|typeof|var|void|while|with|yield)$/;
@@ -36,7 +42,7 @@ const IDENTIFIER_REGEX =
36
42
  * @param {string} name name to be validated
37
43
  * @returns {boolean} true, when valid
38
44
  */
39
- const isNameValid = name =>
45
+ const isNameValid = (name) =>
40
46
  !KEYWORD_REGEX.test(name) && IDENTIFIER_REGEX.test(name);
41
47
 
42
48
  /**
@@ -83,25 +89,30 @@ const accessWithInit = (accessor, existingLength, initLast = false) => {
83
89
  }
84
90
 
85
91
  // print the last property as property access if not yet printed
86
- if (i < accessor.length)
92
+ if (i < accessor.length) {
87
93
  current = `${current}${propertyAccess([accessor[accessor.length - 1]])}`;
94
+ }
88
95
 
89
96
  return current;
90
97
  };
91
98
 
99
+ /** @typedef {string[] | "global"} LibraryPrefix */
100
+
92
101
  /**
93
102
  * @typedef {object} AssignLibraryPluginOptions
94
103
  * @property {LibraryType} type
95
- * @property {string[] | "global"} prefix name prefix
104
+ * @property {LibraryPrefix} prefix name prefix
96
105
  * @property {string | false} declare declare name as variable
97
- * @property {"error"|"static"|"copy"|"assign"} unnamed behavior for unnamed library name
98
- * @property {"copy"|"assign"=} named behavior for named library name
106
+ * @property {"error" | "static" | "copy" | "assign"} unnamed behavior for unnamed library name
107
+ * @property {"copy" | "assign"=} named behavior for named library name
99
108
  */
100
109
 
110
+ /** @typedef {string | string[]} LibraryName */
111
+
101
112
  /**
102
113
  * @typedef {object} AssignLibraryPluginParsed
103
- * @property {string | string[]} name
104
- * @property {string | string[] | undefined} export
114
+ * @property {LibraryName} name
115
+ * @property {LibraryExport=} export
105
116
  */
106
117
 
107
118
  /**
@@ -140,7 +151,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
140
151
  `Library name must be a string, string array or unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
141
152
  );
142
153
  }
143
- const _name = /** @type {string | string[]} */ (name);
154
+ const _name = /** @type {LibraryName} */ (name);
144
155
  return {
145
156
  name: _name,
146
157
  export: library.export
@@ -175,7 +186,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
175
186
 
176
187
  /**
177
188
  * @param {Compilation} compilation the compilation
178
- * @returns {string[]} the prefix
189
+ * @returns {LibraryPrefix} the prefix
179
190
  */
180
191
  _getPrefix(compilation) {
181
192
  return this.prefix === "global"
@@ -187,12 +198,17 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
187
198
  * @param {AssignLibraryPluginParsed} options the library options
188
199
  * @param {Chunk} chunk the chunk
189
200
  * @param {Compilation} compilation the compilation
190
- * @returns {Array<string>} the resolved full name
201
+ * @returns {string[]} the resolved full name
191
202
  */
192
203
  _getResolvedFullName(options, chunk, compilation) {
193
204
  const prefix = this._getPrefix(compilation);
194
- const fullName = options.name ? prefix.concat(options.name) : prefix;
195
- return fullName.map(n =>
205
+ const fullName = options.name
206
+ ? [
207
+ ...prefix,
208
+ ...(Array.isArray(options.name) ? options.name : [options.name])
209
+ ]
210
+ : /** @type {string[]} */ (prefix);
211
+ return fullName.map((n) =>
196
212
  compilation.getPath(n, {
197
213
  chunk
198
214
  })
@@ -242,16 +258,18 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
242
258
  const topLevelDeclarations =
243
259
  (data && data.get("topLevelDeclarations")) ||
244
260
  (module.buildInfo && module.buildInfo.topLevelDeclarations);
245
- if (!topLevelDeclarations)
261
+ if (!topLevelDeclarations) {
246
262
  return "it doesn't tell about top level declarations.";
263
+ }
247
264
  const fullNameResolved = this._getResolvedFullName(
248
265
  options,
249
266
  chunk,
250
267
  compilation
251
268
  );
252
269
  const base = fullNameResolved[0];
253
- if (topLevelDeclarations.has(base))
270
+ if (topLevelDeclarations.has(base)) {
254
271
  return `it declares '${base}' on top-level, which conflicts with the current library output.`;
272
+ }
255
273
  }
256
274
 
257
275
  /**
@@ -303,13 +321,48 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
303
321
  this._getPrefix(compilation).length,
304
322
  true
305
323
  );
324
+
325
+ /** @type {ExportInfoName[]} */
326
+ const provided = [];
306
327
  for (const exportInfo of exportsInfo.orderedExports) {
307
328
  if (!exportInfo.provided) continue;
308
329
  const nameAccess = propertyAccess([exportInfo.name]);
309
330
  result.add(
310
331
  `${exportTarget}${nameAccess} = ${RuntimeGlobals.exports}${exportAccess}${nameAccess};\n`
311
332
  );
333
+ provided.push(exportInfo.name);
334
+ }
335
+
336
+ const webpackExportTarget = accessWithInit(
337
+ fullNameResolved,
338
+ this._getPrefix(compilation).length,
339
+ true
340
+ );
341
+ /** @type {string} */
342
+ let exports = RuntimeGlobals.exports;
343
+ if (exportAccess) {
344
+ result.add(
345
+ `var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
346
+ );
347
+
348
+ exports = "__webpack_exports_export__";
349
+ }
350
+ result.add(`for(var __webpack_i__ in ${exports}) {\n`);
351
+ const hasProvided = provided.length > 0;
352
+ if (hasProvided) {
353
+ result.add(
354
+ ` if (${JSON.stringify(provided)}.indexOf(__webpack_i__) === -1) {\n`
355
+ );
312
356
  }
357
+ result.add(
358
+ ` ${
359
+ hasProvided ? " " : ""
360
+ }${webpackExportTarget}[__webpack_i__] = ${exports}[__webpack_i__];\n`
361
+ );
362
+ if (hasProvided) {
363
+ result.add(" }\n");
364
+ }
365
+ result.add("}\n");
313
366
  result.add(
314
367
  `Object.defineProperty(${exportTarget}, "__esModule", { value: true });\n`
315
368
  );
@@ -327,6 +380,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
327
380
  result.add(
328
381
  `var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
329
382
  );
383
+
330
384
  exports = "__webpack_exports_export__";
331
385
  }
332
386
  result.add(
@@ -349,7 +403,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
349
403
 
350
404
  /**
351
405
  * @param {Chunk} chunk the chunk
352
- * @param {Set<string>} set runtime requirements
406
+ * @param {RuntimeRequirements} set runtime requirements
353
407
  * @param {LibraryContext<T>} libraryContext context
354
408
  * @returns {void}
355
409
  */
@@ -5,18 +5,24 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
9
8
  /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
10
9
  /** @typedef {import("../Compiler")} Compiler */
11
10
 
12
- /** @type {WeakMap<Compiler, Set<LibraryType>>} */
11
+ /** @typedef {Set<LibraryType>} LibraryTypes */
12
+
13
+ /** @type {WeakMap<Compiler, LibraryTypes>} */
13
14
  const enabledTypes = new WeakMap();
14
15
 
16
+ /**
17
+ * @typedef {object} EnableLibraryPluginOptions
18
+ * @property {() => void=} additionalApply function that runs when applying the current plugin.
19
+ */
20
+
15
21
  /**
16
22
  * @param {Compiler} compiler the compiler instance
17
- * @returns {Set<LibraryType>} enabled types
23
+ * @returns {LibraryTypes} enabled types
18
24
  */
19
- const getEnabledTypes = compiler => {
25
+ const getEnabledTypes = (compiler) => {
20
26
  let set = enabledTypes.get(compiler);
21
27
  if (set === undefined) {
22
28
  set = new Set();
@@ -28,9 +34,13 @@ const getEnabledTypes = compiler => {
28
34
  class EnableLibraryPlugin {
29
35
  /**
30
36
  * @param {LibraryType} type library type that should be available
37
+ * @param {EnableLibraryPluginOptions} options options of EnableLibraryPlugin
31
38
  */
32
- constructor(type) {
39
+ constructor(type, options = {}) {
40
+ /** @type {LibraryType} */
33
41
  this.type = type;
42
+ /** @type {EnableLibraryPluginOptions} */
43
+ this.options = options;
34
44
  }
35
45
 
36
46
  /**
@@ -54,9 +64,7 @@ class EnableLibraryPlugin {
54
64
  "EnableLibraryPlugin need to be used to enable this type of library. " +
55
65
  'This usually happens through the "output.enabledLibraryTypes" option. ' +
56
66
  'If you are using a function as entry which sets "library", you need to add all potential library types to "output.enabledLibraryTypes". ' +
57
- `These types are enabled: ${Array.from(
58
- getEnabledTypes(compiler)
59
- ).join(", ")}`
67
+ `These types are enabled: ${[...getEnabledTypes(compiler)].join(", ")}`
60
68
  );
61
69
  }
62
70
  }
@@ -67,26 +75,30 @@ class EnableLibraryPlugin {
67
75
  * @returns {void}
68
76
  */
69
77
  apply(compiler) {
70
- const { type } = this;
78
+ const { type, options } = this;
71
79
 
72
80
  // Only enable once
73
81
  const enabled = getEnabledTypes(compiler);
74
82
  if (enabled.has(type)) return;
75
83
  enabled.add(type);
76
84
 
85
+ if (typeof options.additionalApply === "function") {
86
+ options.additionalApply();
87
+ }
88
+
77
89
  if (typeof type === "string") {
78
90
  const enableExportProperty = () => {
79
- const ExportPropertyTemplatePlugin = require("./ExportPropertyLibraryPlugin");
80
- new ExportPropertyTemplatePlugin({
81
- type,
82
- nsObjectUsed: !["module", "modern-module"].includes(type),
83
- runtimeExportsUsed: type !== "modern-module"
91
+ const ExportPropertyLibraryPlugin = require("./ExportPropertyLibraryPlugin");
92
+
93
+ new ExportPropertyLibraryPlugin({
94
+ type
84
95
  }).apply(compiler);
85
96
  };
86
97
  switch (type) {
87
98
  case "var": {
88
99
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
89
100
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
101
+
90
102
  new AssignLibraryPlugin({
91
103
  type,
92
104
  prefix: [],
@@ -98,6 +110,7 @@ class EnableLibraryPlugin {
98
110
  case "assign-properties": {
99
111
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
100
112
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
113
+
101
114
  new AssignLibraryPlugin({
102
115
  type,
103
116
  prefix: [],
@@ -110,6 +123,7 @@ class EnableLibraryPlugin {
110
123
  case "assign": {
111
124
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
112
125
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
126
+
113
127
  new AssignLibraryPlugin({
114
128
  type,
115
129
  prefix: [],
@@ -121,6 +135,7 @@ class EnableLibraryPlugin {
121
135
  case "this": {
122
136
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
123
137
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
138
+
124
139
  new AssignLibraryPlugin({
125
140
  type,
126
141
  prefix: ["this"],
@@ -132,6 +147,7 @@ class EnableLibraryPlugin {
132
147
  case "window": {
133
148
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
134
149
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
150
+
135
151
  new AssignLibraryPlugin({
136
152
  type,
137
153
  prefix: ["window"],
@@ -143,6 +159,7 @@ class EnableLibraryPlugin {
143
159
  case "self": {
144
160
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
145
161
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
162
+
146
163
  new AssignLibraryPlugin({
147
164
  type,
148
165
  prefix: ["self"],
@@ -154,6 +171,7 @@ class EnableLibraryPlugin {
154
171
  case "global": {
155
172
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
156
173
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
174
+
157
175
  new AssignLibraryPlugin({
158
176
  type,
159
177
  prefix: "global",
@@ -165,6 +183,7 @@ class EnableLibraryPlugin {
165
183
  case "commonjs": {
166
184
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
167
185
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
186
+
168
187
  new AssignLibraryPlugin({
169
188
  type,
170
189
  prefix: ["exports"],
@@ -176,6 +195,7 @@ class EnableLibraryPlugin {
176
195
  case "commonjs-static": {
177
196
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
178
197
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
198
+
179
199
  new AssignLibraryPlugin({
180
200
  type,
181
201
  prefix: ["exports"],
@@ -188,6 +208,7 @@ class EnableLibraryPlugin {
188
208
  case "commonjs-module": {
189
209
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
190
210
  const AssignLibraryPlugin = require("./AssignLibraryPlugin");
211
+
191
212
  new AssignLibraryPlugin({
192
213
  type,
193
214
  prefix: ["module", "exports"],
@@ -199,7 +220,9 @@ class EnableLibraryPlugin {
199
220
  case "amd":
200
221
  case "amd-require": {
201
222
  enableExportProperty();
223
+
202
224
  const AmdLibraryPlugin = require("./AmdLibraryPlugin");
225
+
203
226
  new AmdLibraryPlugin({
204
227
  type,
205
228
  requireAsWrapper: type === "amd-require"
@@ -212,11 +235,15 @@ class EnableLibraryPlugin {
212
235
  compiler.options.output.iife = true;
213
236
 
214
237
  class WarnFalseIifeUmdPlugin {
238
+ /**
239
+ * @param {Compiler} compiler the compiler instance
240
+ */
215
241
  apply(compiler) {
216
242
  compiler.hooks.thisCompilation.tap(
217
243
  "WarnFalseIifeUmdPlugin",
218
- compilation => {
244
+ (compilation) => {
219
245
  const FalseIIFEUmdWarning = require("../FalseIIFEUmdWarning");
246
+
220
247
  compilation.warnings.push(new FalseIIFEUmdWarning());
221
248
  }
222
249
  );
@@ -226,7 +253,9 @@ class EnableLibraryPlugin {
226
253
  new WarnFalseIifeUmdPlugin().apply(compiler);
227
254
  }
228
255
  enableExportProperty();
256
+
229
257
  const UmdLibraryPlugin = require("./UmdLibraryPlugin");
258
+
230
259
  new UmdLibraryPlugin({
231
260
  type,
232
261
  optionalAmdExternalAsGlobal: type === "umd2"
@@ -235,7 +264,9 @@ class EnableLibraryPlugin {
235
264
  }
236
265
  case "system": {
237
266
  enableExportProperty();
267
+
238
268
  const SystemLibraryPlugin = require("./SystemLibraryPlugin");
269
+
239
270
  new SystemLibraryPlugin({
240
271
  type
241
272
  }).apply(compiler);
@@ -243,28 +274,23 @@ class EnableLibraryPlugin {
243
274
  }
244
275
  case "jsonp": {
245
276
  enableExportProperty();
277
+
246
278
  const JsonpLibraryPlugin = require("./JsonpLibraryPlugin");
279
+
247
280
  new JsonpLibraryPlugin({
248
281
  type
249
282
  }).apply(compiler);
250
283
  break;
251
284
  }
252
- case "module": {
253
- enableExportProperty();
285
+ case "module":
286
+ case "modern-module": {
254
287
  const ModuleLibraryPlugin = require("./ModuleLibraryPlugin");
288
+
255
289
  new ModuleLibraryPlugin({
256
290
  type
257
291
  }).apply(compiler);
258
292
  break;
259
293
  }
260
- case "modern-module": {
261
- enableExportProperty();
262
- const ModernModuleLibraryPlugin = require("./ModernModuleLibraryPlugin");
263
- new ModernModuleLibraryPlugin({
264
- type
265
- }).apply(compiler);
266
- break;
267
- }
268
294
  default:
269
295
  throw new Error(`Unsupported library type ${type}.
270
296
  Plugins which provide custom library types must call EnableLibraryPlugin.setEnabled(compiler, type) to disable this error.`);
@@ -15,22 +15,24 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
15
15
  /** @typedef {import("webpack-sources").Source} Source */
16
16
  /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
17
17
  /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
18
+ /** @typedef {import("../../declarations/WebpackOptions").LibraryExport} LibraryExport */
18
19
  /** @typedef {import("../Chunk")} Chunk */
19
- /** @typedef {import("../Compiler")} Compiler */
20
20
  /** @typedef {import("../Module")} Module */
21
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
21
22
  /** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
22
- /** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
23
+ /**
24
+ * @template T
25
+ * @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
26
+ */
23
27
 
24
28
  /**
25
29
  * @typedef {object} ExportPropertyLibraryPluginParsed
26
- * @property {string | string[]} export
30
+ * @property {LibraryExport=} export
27
31
  */
28
32
 
29
33
  /**
30
34
  * @typedef {object} ExportPropertyLibraryPluginOptions
31
35
  * @property {LibraryType} type
32
- * @property {boolean} nsObjectUsed the namespace object is used
33
- * @property {boolean} runtimeExportsUsed runtime exports are used
34
36
  */
35
37
  /**
36
38
  * @typedef {ExportPropertyLibraryPluginParsed} T
@@ -40,13 +42,11 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
40
42
  /**
41
43
  * @param {ExportPropertyLibraryPluginOptions} options options
42
44
  */
43
- constructor({ type, nsObjectUsed, runtimeExportsUsed }) {
45
+ constructor({ type }) {
44
46
  super({
45
47
  pluginName: "ExportPropertyLibraryPlugin",
46
48
  type
47
49
  });
48
- this.nsObjectUsed = nsObjectUsed;
49
- this.runtimeExportsUsed = runtimeExportsUsed;
50
50
  }
51
51
 
52
52
  /**
@@ -55,7 +55,7 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
55
55
  */
56
56
  parseOptions(library) {
57
57
  return {
58
- export: /** @type {string | string[]} */ (library.export)
58
+ export: library.export
59
59
  };
60
60
  }
61
61
 
@@ -80,25 +80,19 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
80
80
  exportsInfo.canMangleUse = false;
81
81
  } else {
82
82
  const exportsInfo = moduleGraph.getExportsInfo(module);
83
- if (this.nsObjectUsed) {
84
- exportsInfo.setUsedInUnknownWay(runtime);
85
- } else {
86
- exportsInfo.setAllKnownExportsUsed(runtime);
87
- }
83
+ exportsInfo.setUsedInUnknownWay(runtime);
88
84
  }
89
85
  moduleGraph.addExtraReason(module, "used as library export");
90
86
  }
91
87
 
92
88
  /**
93
89
  * @param {Chunk} chunk the chunk
94
- * @param {Set<string>} set runtime requirements
90
+ * @param {RuntimeRequirements} set runtime requirements
95
91
  * @param {LibraryContext<T>} libraryContext context
96
92
  * @returns {void}
97
93
  */
98
94
  runtimeRequirements(chunk, set, libraryContext) {
99
- if (this.runtimeExportsUsed) {
100
- set.add(RuntimeGlobals.exports);
101
- }
95
+ set.add(RuntimeGlobals.exports);
102
96
  }
103
97
 
104
98
  /**