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
@@ -5,18 +5,21 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { join, dirname } = require("./util/fs");
8
+ const { dirname, join } = require("./util/fs");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
+ /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
11
12
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
12
13
 
13
- /** @typedef {function(import("./NormalModuleFactory").ResolveData): void} ModuleReplacer */
14
+ /** @typedef {(resolveData: ResolveData) => void} ModuleReplacer */
15
+
16
+ const PLUGIN_NAME = "NormalModuleReplacementPlugin";
14
17
 
15
18
  class NormalModuleReplacementPlugin {
16
19
  /**
17
20
  * Create an instance of the plugin
18
21
  * @param {RegExp} resourceRegExp the resource matcher
19
- * @param {string|ModuleReplacer} newResource the resource replacement
22
+ * @param {string | ModuleReplacer} newResource the resource replacement
20
23
  */
21
24
  constructor(resourceRegExp, newResource) {
22
25
  this.resourceRegExp = resourceRegExp;
@@ -31,46 +34,41 @@ class NormalModuleReplacementPlugin {
31
34
  apply(compiler) {
32
35
  const resourceRegExp = this.resourceRegExp;
33
36
  const newResource = this.newResource;
34
- compiler.hooks.normalModuleFactory.tap(
35
- "NormalModuleReplacementPlugin",
36
- nmf => {
37
- nmf.hooks.beforeResolve.tap("NormalModuleReplacementPlugin", result => {
38
- if (resourceRegExp.test(result.request)) {
39
- if (typeof newResource === "function") {
40
- newResource(result);
41
- } else {
42
- result.request = newResource;
43
- }
37
+ compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (nmf) => {
38
+ nmf.hooks.beforeResolve.tap(PLUGIN_NAME, (result) => {
39
+ if (resourceRegExp.test(result.request)) {
40
+ if (typeof newResource === "function") {
41
+ newResource(result);
42
+ } else {
43
+ result.request = newResource;
44
44
  }
45
- });
46
- nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
47
- const createData = result.createData;
48
- if (
49
- resourceRegExp.test(/** @type {string} */ (createData.resource))
50
- ) {
51
- if (typeof newResource === "function") {
52
- newResource(result);
45
+ }
46
+ });
47
+ nmf.hooks.afterResolve.tap(PLUGIN_NAME, (result) => {
48
+ const createData = result.createData;
49
+ if (resourceRegExp.test(/** @type {string} */ (createData.resource))) {
50
+ if (typeof newResource === "function") {
51
+ newResource(result);
52
+ } else {
53
+ const fs =
54
+ /** @type {InputFileSystem} */
55
+ (compiler.inputFileSystem);
56
+ if (
57
+ newResource.startsWith("/") ||
58
+ (newResource.length > 1 && newResource[1] === ":")
59
+ ) {
60
+ createData.resource = newResource;
53
61
  } else {
54
- const fs =
55
- /** @type {InputFileSystem} */
56
- (compiler.inputFileSystem);
57
- if (
58
- newResource.startsWith("/") ||
59
- (newResource.length > 1 && newResource[1] === ":")
60
- ) {
61
- createData.resource = newResource;
62
- } else {
63
- createData.resource = join(
64
- fs,
65
- dirname(fs, /** @type {string} */ (createData.resource)),
66
- newResource
67
- );
68
- }
62
+ createData.resource = join(
63
+ fs,
64
+ dirname(fs, /** @type {string} */ (createData.resource)),
65
+ newResource
66
+ );
69
67
  }
70
68
  }
71
- });
72
- }
73
- );
69
+ }
70
+ });
71
+ });
74
72
  }
75
73
  }
76
74
 
@@ -7,17 +7,18 @@
7
7
 
8
8
  const ModuleFactory = require("./ModuleFactory");
9
9
 
10
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
10
11
  /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
11
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
12
12
 
13
13
  class NullFactory extends ModuleFactory {
14
14
  /**
15
15
  * @param {ModuleFactoryCreateData} data data object
16
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
16
+ * @param {ModuleFactoryCallback} callback callback
17
17
  * @returns {void}
18
18
  */
19
19
  create(data, callback) {
20
20
  return callback();
21
21
  }
22
22
  }
23
+
23
24
  module.exports = NullFactory;
@@ -5,6 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ module.exports.STAGE_ADVANCED = 10;
8
9
  module.exports.STAGE_BASIC = -10;
9
10
  module.exports.STAGE_DEFAULT = 0;
10
- module.exports.STAGE_ADVANCED = 10;
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
8
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
9
9
  /** @typedef {import("./Compiler")} Compiler */
10
10
 
11
11
  class OptionsApply {
package/lib/Parser.js CHANGED
@@ -5,10 +5,11 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
8
9
  /** @typedef {import("./Compilation")} Compilation */
9
10
  /** @typedef {import("./NormalModule")} NormalModule */
10
11
 
11
- /** @typedef {Record<string, any>} PreparsedAst */
12
+ /** @typedef {Record<string, EXPECTED_ANY>} PreparsedAst */
12
13
 
13
14
  /**
14
15
  * @typedef {object} ParserStateBase
@@ -16,10 +17,10 @@
16
17
  * @property {NormalModule} current
17
18
  * @property {NormalModule} module
18
19
  * @property {Compilation} compilation
19
- * @property {{[k: string]: any}} options
20
+ * @property {WebpackOptions} options
20
21
  */
21
22
 
22
- /** @typedef {Record<string, any> & ParserStateBase} ParserState */
23
+ /** @typedef {ParserStateBase & Record<string, EXPECTED_ANY>} ParserState */
23
24
 
24
25
  class Parser {
25
26
  /* istanbul ignore next */
@@ -31,6 +32,7 @@ class Parser {
31
32
  */
32
33
  parse(source, state) {
33
34
  const AbstractMethodError = require("./AbstractMethodError");
35
+
34
36
  throw new AbstractMethodError();
35
37
  }
36
38
  }
@@ -8,6 +8,8 @@
8
8
  /** @typedef {import("./Compiler")} Compiler */
9
9
  /** @typedef {import("./config/target").PlatformTargetProperties} PlatformTargetProperties */
10
10
 
11
+ const PLUGIN_NAME = "PlatformPlugin";
12
+
11
13
  /**
12
14
  * Should be used only for "target === false" or
13
15
  * when you want to overwrite platform target properties
@@ -27,7 +29,7 @@ class PlatformPlugin {
27
29
  * @returns {void}
28
30
  */
29
31
  apply(compiler) {
30
- compiler.hooks.environment.tap("PlatformPlugin", () => {
32
+ compiler.hooks.environment.tap(PLUGIN_NAME, () => {
31
33
  compiler.platform = {
32
34
  ...compiler.platform,
33
35
  ...this.platform
@@ -9,10 +9,12 @@ const PrefetchDependency = require("./dependencies/PrefetchDependency");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
+ const PLUGIN_NAME = "PrefetchPlugin";
13
+
12
14
  class PrefetchPlugin {
13
15
  /**
14
16
  * @param {string} context context or request if context is not set
15
- * @param {string} [request] request
17
+ * @param {string=} request request
16
18
  */
17
19
  constructor(context, request) {
18
20
  if (request) {
@@ -31,7 +33,7 @@ class PrefetchPlugin {
31
33
  */
32
34
  apply(compiler) {
33
35
  compiler.hooks.compilation.tap(
34
- "PrefetchPlugin",
36
+ PLUGIN_NAME,
35
37
  (compilation, { normalModuleFactory }) => {
36
38
  compilation.dependencyFactories.set(
37
39
  PrefetchDependency,
@@ -39,11 +41,11 @@ class PrefetchPlugin {
39
41
  );
40
42
  }
41
43
  );
42
- compiler.hooks.make.tapAsync("PrefetchPlugin", (compilation, callback) => {
44
+ compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
43
45
  compilation.addModuleChain(
44
46
  this.context || compiler.context,
45
47
  new PrefetchDependency(this.request),
46
- err => {
48
+ (err) => {
47
49
  callback(err);
48
50
  }
49
51
  );
@@ -12,9 +12,11 @@ const createSchemaValidation = require("./util/create-schema-validation");
12
12
  const { contextify } = require("./util/identifier");
13
13
 
14
14
  /** @typedef {import("tapable").Tap} Tap */
15
- /** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
15
+ /**
16
+ * @template T, R, AdditionalOptions
17
+ * @typedef {import("tapable").Hook<T, R, AdditionalOptions>} Hook
18
+ */
16
19
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
17
- /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
18
20
  /** @typedef {import("./Compilation").FactorizeModuleOptions} FactorizeModuleOptions */
19
21
  /** @typedef {import("./Dependency")} Dependency */
20
22
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
@@ -34,7 +36,7 @@ const { contextify } = require("./util/identifier");
34
36
  */
35
37
 
36
38
  const validate = createSchemaValidation(
37
- require("../schemas/plugins/ProgressPlugin.check.js"),
39
+ require("../schemas/plugins/ProgressPlugin.check"),
38
40
  () => require("../schemas/plugins/ProgressPlugin.json"),
39
41
  {
40
42
  name: "Progress Plugin",
@@ -50,27 +52,25 @@ const validate = createSchemaValidation(
50
52
  */
51
53
  const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
52
54
 
55
+ /** @typedef {(percentage: number, msg: string, ...args: string[]) => void} HandlerFn */
56
+
53
57
  /**
54
58
  * @param {boolean | null | undefined} profile need profile
55
59
  * @param {Logger} logger logger
56
- * @returns {defaultHandler} default handler
60
+ * @returns {HandlerFn} default handler
57
61
  */
58
62
  const createDefaultHandler = (profile, logger) => {
59
63
  /** @type {{ value: string | undefined, time: number }[]} */
60
64
  const lastStateInfo = [];
61
65
 
62
- /**
63
- * @param {number} percentage percentage
64
- * @param {string} msg message
65
- * @param {...string} args additional arguments
66
- */
66
+ /** @type {HandlerFn} */
67
67
  const defaultHandler = (percentage, msg, ...args) => {
68
68
  if (profile) {
69
69
  if (percentage === 0) {
70
70
  lastStateInfo.length = 0;
71
71
  }
72
72
  const fullState = [msg, ...args];
73
- const state = fullState.map(s => s.replace(/\d+\/\d+ /g, ""));
73
+ const state = fullState.map((s) => s.replace(/\d+\/\d+ /g, ""));
74
74
  const now = Date.now();
75
75
  const len = Math.max(state.length, lastStateInfo.length);
76
76
  for (let i = len; i >= 0; i--) {
@@ -140,6 +140,8 @@ const SKIPPED_QUEUE_CONTEXTS = ["import-module", "load-module"];
140
140
  /** @type {WeakMap<Compiler, ReportProgress | undefined>} */
141
141
  const progressReporters = new WeakMap();
142
142
 
143
+ const PLUGIN_NAME = "ProgressPlugin";
144
+
143
145
  class ProgressPlugin {
144
146
  /**
145
147
  * @param {Compiler} compiler the current compiler
@@ -193,7 +195,7 @@ class ProgressPlugin {
193
195
 
194
196
  /**
195
197
  * @param {MultiCompiler} compiler webpack multi-compiler
196
- * @param {HandlerFunction} handler function that executes for every progress step
198
+ * @param {HandlerFn} handler function that executes for every progress step
197
199
  * @returns {void}
198
200
  */
199
201
  _applyOnMultiCompiler(compiler, handler) {
@@ -212,7 +214,7 @@ class ProgressPlugin {
212
214
 
213
215
  /**
214
216
  * @param {Compiler} compiler webpack compiler
215
- * @param {HandlerFunction} handler function that executes for every progress step
217
+ * @param {HandlerFn} handler function that executes for every progress step
216
218
  * @returns {void}
217
219
  */
218
220
  _applyOnCompiler(compiler, handler) {
@@ -319,14 +321,16 @@ class ProgressPlugin {
319
321
  skippedDependenciesCount++;
320
322
  }
321
323
  dependenciesCount++;
322
- if (dependenciesCount < 50 || dependenciesCount % 100 === 0)
324
+ if (dependenciesCount < 50 || dependenciesCount % 100 === 0) {
323
325
  updateThrottled();
326
+ }
324
327
  };
325
328
 
326
329
  const factorizeDone = () => {
327
330
  doneDependencies++;
328
- if (doneDependencies < 50 || doneDependencies % 100 === 0)
331
+ if (doneDependencies < 50 || doneDependencies % 100 === 0) {
329
332
  updateThrottled();
333
+ }
330
334
  };
331
335
 
332
336
  /**
@@ -346,7 +350,7 @@ class ProgressPlugin {
346
350
  /**
347
351
  * @param {Module} module the module
348
352
  */
349
- const moduleBuild = module => {
353
+ const moduleBuild = (module) => {
350
354
  const ident = module.identifier();
351
355
  if (ident) {
352
356
  activeModules.add(ident);
@@ -367,7 +371,7 @@ class ProgressPlugin {
367
371
  /**
368
372
  * @param {Module} module the module
369
373
  */
370
- const moduleDone = module => {
374
+ const moduleDone = (module) => {
371
375
  doneModules++;
372
376
  if (showActiveModules) {
373
377
  const ident = module.identifier();
@@ -395,17 +399,15 @@ class ProgressPlugin {
395
399
  update();
396
400
  };
397
401
 
398
- const cache = compiler
399
- .getCache("ProgressPlugin")
400
- .getItemCache("counts", null);
402
+ const cache = compiler.getCache(PLUGIN_NAME).getItemCache("counts", null);
401
403
 
402
404
  /** @type {Promise<CountsData> | undefined} */
403
405
  let cacheGetPromise;
404
406
 
405
- compiler.hooks.beforeCompile.tap("ProgressPlugin", () => {
407
+ compiler.hooks.beforeCompile.tap(PLUGIN_NAME, () => {
406
408
  if (!cacheGetPromise) {
407
409
  cacheGetPromise = cache.getPromise().then(
408
- data => {
410
+ (data) => {
409
411
  if (data) {
410
412
  lastModulesCount = lastModulesCount || data.modulesCount;
411
413
  lastDependenciesCount =
@@ -413,17 +415,17 @@ class ProgressPlugin {
413
415
  }
414
416
  return data;
415
417
  },
416
- err => {
418
+ (_err) => {
417
419
  // Ignore error
418
420
  }
419
421
  );
420
422
  }
421
423
  });
422
424
 
423
- compiler.hooks.afterCompile.tapPromise("ProgressPlugin", compilation => {
425
+ compiler.hooks.afterCompile.tapPromise(PLUGIN_NAME, (compilation) => {
424
426
  if (compilation.compiler.isChild()) return Promise.resolve();
425
427
  return /** @type {Promise<CountsData>} */ (cacheGetPromise).then(
426
- async oldData => {
428
+ async (oldData) => {
427
429
  const realModulesCount = modulesCount - skippedModulesCount;
428
430
  const realDependenciesCount =
429
431
  dependenciesCount - skippedDependenciesCount;
@@ -442,7 +444,7 @@ class ProgressPlugin {
442
444
  );
443
445
  });
444
446
 
445
- compiler.hooks.compilation.tap("ProgressPlugin", compilation => {
447
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
446
448
  if (compilation.compiler.isChild()) return;
447
449
  lastModulesCount = modulesCount;
448
450
  lastEntriesCount = entriesCount;
@@ -455,37 +457,33 @@ class ProgressPlugin {
455
457
  0;
456
458
  doneModules = doneDependencies = doneEntries = 0;
457
459
 
458
- compilation.factorizeQueue.hooks.added.tap("ProgressPlugin", item =>
460
+ compilation.factorizeQueue.hooks.added.tap(PLUGIN_NAME, (item) =>
459
461
  factorizeAdd(compilation.factorizeQueue, item)
460
462
  );
461
- compilation.factorizeQueue.hooks.result.tap(
462
- "ProgressPlugin",
463
- factorizeDone
464
- );
463
+ compilation.factorizeQueue.hooks.result.tap(PLUGIN_NAME, factorizeDone);
465
464
 
466
- compilation.addModuleQueue.hooks.added.tap("ProgressPlugin", item =>
465
+ compilation.addModuleQueue.hooks.added.tap(PLUGIN_NAME, (item) =>
467
466
  moduleAdd(compilation.addModuleQueue, item)
468
467
  );
469
468
  compilation.processDependenciesQueue.hooks.result.tap(
470
- "ProgressPlugin",
469
+ PLUGIN_NAME,
471
470
  moduleDone
472
471
  );
473
472
 
474
473
  if (showActiveModules) {
475
- compilation.hooks.buildModule.tap("ProgressPlugin", moduleBuild);
474
+ compilation.hooks.buildModule.tap(PLUGIN_NAME, moduleBuild);
476
475
  }
477
476
 
478
- compilation.hooks.addEntry.tap("ProgressPlugin", entryAdd);
479
- compilation.hooks.failedEntry.tap("ProgressPlugin", entryDone);
480
- compilation.hooks.succeedEntry.tap("ProgressPlugin", entryDone);
477
+ compilation.hooks.addEntry.tap(PLUGIN_NAME, entryAdd);
478
+ compilation.hooks.failedEntry.tap(PLUGIN_NAME, entryDone);
479
+ compilation.hooks.succeedEntry.tap(PLUGIN_NAME, entryDone);
481
480
 
482
- // avoid dynamic require if bundled with webpack
483
- // @ts-expect-error
481
+ // @ts-expect-error avoid dynamic require if bundled with webpack
484
482
  if (typeof __webpack_require__ !== "function") {
485
483
  const requiredLoaders = new Set();
486
484
  NormalModule.getCompilationHooks(compilation).beforeLoaders.tap(
487
- "ProgressPlugin",
488
- loaders => {
485
+ PLUGIN_NAME,
486
+ (loaders) => {
489
487
  for (const loader of loaders) {
490
488
  if (
491
489
  loader.type !== "module" &&
@@ -551,7 +549,7 @@ class ProgressPlugin {
551
549
  const title = hooks[/** @type {keyof typeof hooks} */ (name)];
552
550
  const percentage = (idx / numberOfHooks) * 0.25 + 0.7;
553
551
  compilation.hooks[/** @type {keyof typeof hooks} */ (name)].intercept({
554
- name: "ProgressPlugin",
552
+ name: PLUGIN_NAME,
555
553
  call() {
556
554
  handler(percentage, "sealing", title);
557
555
  },
@@ -577,7 +575,7 @@ class ProgressPlugin {
577
575
  }
578
576
  });
579
577
  compiler.hooks.make.intercept({
580
- name: "ProgressPlugin",
578
+ name: PLUGIN_NAME,
581
579
  call() {
582
580
  handler(0.1, "building");
583
581
  },
@@ -586,14 +584,15 @@ class ProgressPlugin {
586
584
  }
587
585
  });
588
586
  /**
589
- * @param {TODO} hook hook
587
+ * @template {Hook<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} T
588
+ * @param {T} hook hook
590
589
  * @param {number} progress progress from 0 to 1
591
590
  * @param {string} category category
592
591
  * @param {string} name name
593
592
  */
594
593
  const interceptHook = (hook, progress, category, name) => {
595
594
  hook.intercept({
596
- name: "ProgressPlugin",
595
+ name: PLUGIN_NAME,
597
596
  call() {
598
597
  handler(progress, category, name);
599
598
  },
@@ -619,14 +618,14 @@ class ProgressPlugin {
619
618
  });
620
619
  };
621
620
  compiler.cache.hooks.endIdle.intercept({
622
- name: "ProgressPlugin",
621
+ name: PLUGIN_NAME,
623
622
  call() {
624
623
  handler(0, "");
625
624
  }
626
625
  });
627
626
  interceptHook(compiler.cache.hooks.endIdle, 0.01, "cache", "end idle");
628
627
  compiler.hooks.beforeRun.intercept({
629
- name: "ProgressPlugin",
628
+ name: PLUGIN_NAME,
630
629
  call() {
631
630
  handler(0, "");
632
631
  }
@@ -660,7 +659,7 @@ class ProgressPlugin {
660
659
  interceptHook(compiler.hooks.afterEmit, 0.98, "emitting", "after emit");
661
660
  interceptHook(compiler.hooks.done, 0.99, "done", "plugins");
662
661
  compiler.hooks.done.intercept({
663
- name: "ProgressPlugin",
662
+ name: PLUGIN_NAME,
664
663
  done() {
665
664
  handler(0.99, "");
666
665
  }
@@ -680,13 +679,13 @@ class ProgressPlugin {
680
679
  "closing watch compilation"
681
680
  );
682
681
  compiler.cache.hooks.beginIdle.intercept({
683
- name: "ProgressPlugin",
682
+ name: PLUGIN_NAME,
684
683
  done() {
685
684
  handler(1, "");
686
685
  }
687
686
  });
688
687
  compiler.cache.hooks.shutdown.intercept({
689
- name: "ProgressPlugin",
688
+ name: PLUGIN_NAME,
690
689
  done() {
691
690
  handler(1, "");
692
691
  }
@@ -59,9 +59,11 @@ class ProvidePlugin {
59
59
  */
60
60
  const handler = (parser, parserOptions) => {
61
61
  for (const name of Object.keys(definitions)) {
62
- const request =
63
- /** @type {string[]} */
64
- ([]).concat(definitions[name]);
62
+ const request = [
63
+ ...(Array.isArray(definitions[name])
64
+ ? definitions[name]
65
+ : [definitions[name]])
66
+ ];
65
67
  const splittedName = name.split(".");
66
68
  if (splittedName.length > 0) {
67
69
  for (const [i, _] of splittedName.slice(1).entries()) {
@@ -70,7 +72,7 @@ class ProvidePlugin {
70
72
  }
71
73
  }
72
74
 
73
- parser.hooks.expression.for(name).tap(PLUGIN_NAME, expr => {
75
+ parser.hooks.expression.for(name).tap(PLUGIN_NAME, (expr) => {
74
76
  const nameIdentifier = name.includes(".")
75
77
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
76
78
  : name;
@@ -85,7 +87,7 @@ class ProvidePlugin {
85
87
  return true;
86
88
  });
87
89
 
88
- parser.hooks.call.for(name).tap(PLUGIN_NAME, expr => {
90
+ parser.hooks.call.for(name).tap(PLUGIN_NAME, (expr) => {
89
91
  const nameIdentifier = name.includes(".")
90
92
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
91
93
  : name;
package/lib/RawModule.js CHANGED
@@ -7,25 +7,27 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
- const { JS_TYPES } = require("./ModuleSourceTypesConstants");
10
+ const {
11
+ JAVASCRIPT_TYPE,
12
+ JAVASCRIPT_TYPES
13
+ } = require("./ModuleSourceTypeConstants");
11
14
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
12
15
  const makeSerializable = require("./util/makeSerializable");
13
16
 
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
16
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
17
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
17
18
  /** @typedef {import("./Compilation")} Compilation */
18
19
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
19
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
20
20
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
21
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
21
22
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
22
23
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
24
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
23
25
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
24
26
  /** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
27
+ /** @typedef {import("./ModuleGraph")} ModuleGraph */
28
+ /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
25
29
  /** @typedef {import("./RequestShortener")} RequestShortener */
26
30
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
27
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
28
- /** @typedef {import("./WebpackError")} WebpackError */
29
31
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
30
32
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
31
33
  /** @typedef {import("./util/Hash")} Hash */
@@ -50,7 +52,7 @@ class RawModule extends Module {
50
52
  * @returns {SourceTypes} types available (do not mutate)
51
53
  */
52
54
  getSourceTypes() {
53
- return JS_TYPES;
55
+ return JAVASCRIPT_TYPES;
54
56
  }
55
57
 
56
58
  /**
@@ -80,7 +82,7 @@ class RawModule extends Module {
80
82
 
81
83
  /**
82
84
  * @param {NeedBuildContext} context context info
83
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
85
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
84
86
  * @returns {void}
85
87
  */
86
88
  needBuild(context, callback) {
@@ -92,7 +94,7 @@ class RawModule extends Module {
92
94
  * @param {Compilation} compilation the compilation
93
95
  * @param {ResolverWithOptions} resolver the resolver
94
96
  * @param {InputFileSystem} fs the file system
95
- * @param {function(WebpackError=): void} callback callback function
97
+ * @param {BuildCallback} callback callback function
96
98
  * @returns {void}
97
99
  */
98
100
  build(options, compilation, resolver, fs, callback) {
@@ -103,6 +105,18 @@ class RawModule extends Module {
103
105
  callback();
104
106
  }
105
107
 
108
+ /**
109
+ * @param {ModuleGraph} moduleGraph the module graph
110
+ * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
111
+ */
112
+ getSideEffectsConnectionState(moduleGraph) {
113
+ if (this.factoryMeta !== undefined) {
114
+ if (this.factoryMeta.sideEffectFree) return false;
115
+ if (this.factoryMeta.sideEffectFree === false) return true;
116
+ }
117
+ return true;
118
+ }
119
+
106
120
  /**
107
121
  * @param {CodeGenerationContext} context context for code generation
108
122
  * @returns {CodeGenerationResult} result
@@ -111,11 +125,11 @@ class RawModule extends Module {
111
125
  const sources = new Map();
112
126
  if (this.useSourceMap || this.useSimpleSourceMap) {
113
127
  sources.set(
114
- "javascript",
128
+ JAVASCRIPT_TYPE,
115
129
  new OriginalSource(this.sourceStr, this.identifier())
116
130
  );
117
131
  } else {
118
- sources.set("javascript", new RawSource(this.sourceStr));
132
+ sources.set(JAVASCRIPT_TYPE, new RawSource(this.sourceStr));
119
133
  }
120
134
  return { sources, runtimeRequirements: this.runtimeRequirements };
121
135
  }