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
@@ -6,28 +6,45 @@
6
6
 
7
7
  const { Tracer } = require("chrome-trace-event");
8
8
  const {
9
- JAVASCRIPT_MODULE_TYPE_AUTO,
10
- JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
- JAVASCRIPT_MODULE_TYPE_ESM,
12
- WEBASSEMBLY_MODULE_TYPE_ASYNC,
13
- WEBASSEMBLY_MODULE_TYPE_SYNC,
14
- JSON_MODULE_TYPE
9
+ CSS_MODULES,
10
+ JAVASCRIPT_MODULES,
11
+ JSON_MODULE_TYPE,
12
+ WEBASSEMBLY_MODULES
15
13
  } = require("../ModuleTypeConstants");
16
14
  const createSchemaValidation = require("../util/create-schema-validation");
17
15
  const { dirname, mkdirpSync } = require("../util/fs");
18
16
 
17
+ /** @typedef {import("inspector").Session} Session */
18
+ /** @typedef {import("tapable").FullTap} FullTap */
19
19
  /** @typedef {import("../../declarations/plugins/debug/ProfilingPlugin").ProfilingPluginOptions} ProfilingPluginOptions */
20
20
  /** @typedef {import("../Compilation")} Compilation */
21
21
  /** @typedef {import("../Compiler")} Compiler */
22
- /** @typedef {import("../ContextModuleFactory")} ContextModuleFactory */
23
- /** @typedef {import("../ModuleFactory")} ModuleFactory */
24
22
  /** @typedef {import("../NormalModuleFactory")} NormalModuleFactory */
23
+ /** @typedef {import("../ResolverFactory")} ResolverFactory */
25
24
  /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
26
25
 
27
- /** @typedef {TODO} Inspector */
26
+ /**
27
+ * @template T, R
28
+ * @typedef {import("tapable").Hook<T, R>} Hook
29
+ */
30
+
31
+ /**
32
+ * @template T
33
+ * @typedef {import("../util/deprecation").FakeHook<T>} FakeHook
34
+ */
35
+
36
+ /**
37
+ * @template T
38
+ * @typedef {import("tapable").HookMap<T>} HookMap
39
+ */
40
+
41
+ /**
42
+ * @template T, R
43
+ * @typedef {import("tapable").HookInterceptor<T, R>} HookInterceptor
44
+ */
28
45
 
29
46
  const validate = createSchemaValidation(
30
- require("../../schemas/plugins/debug/ProfilingPlugin.check.js"),
47
+ require("../../schemas/plugins/debug/ProfilingPlugin.check"),
31
48
  () => require("../../schemas/plugins/debug/ProfilingPlugin.json"),
32
49
  {
33
50
  name: "Profiling Plugin",
@@ -35,6 +52,8 @@ const validate = createSchemaValidation(
35
52
  }
36
53
  );
37
54
 
55
+ /** @typedef {{ Session: typeof import("inspector").Session }} Inspector */
56
+
38
57
  /** @type {Inspector | undefined} */
39
58
  let inspector;
40
59
 
@@ -42,6 +61,7 @@ try {
42
61
  // eslint-disable-next-line n/no-unsupported-features/node-builtins
43
62
  inspector = require("inspector");
44
63
  } catch (_err) {
64
+ // eslint-disable-next-line no-console
45
65
  console.log("Unable to CPU profile in < node 8.0");
46
66
  }
47
67
 
@@ -50,6 +70,7 @@ class Profiler {
50
70
  * @param {Inspector} inspector inspector
51
71
  */
52
72
  constructor(inspector) {
73
+ /** @type {undefined | Session} */
53
74
  this.session = undefined;
54
75
  this.inspector = inspector;
55
76
  this._startTime = 0;
@@ -65,8 +86,9 @@ class Profiler {
65
86
  }
66
87
 
67
88
  try {
68
- this.session = new inspector.Session();
69
- this.session.connect();
89
+ this.session = new /** @type {Inspector} */ (inspector).Session();
90
+ /** @type {Session} */
91
+ (this.session).connect();
70
92
  } catch (_) {
71
93
  this.session = undefined;
72
94
  return Promise.resolve();
@@ -86,13 +108,14 @@ class Profiler {
86
108
 
87
109
  /**
88
110
  * @param {string} method method name
89
- * @param {object} [params] params
90
- * @returns {Promise<TODO>} Promise for the result
111
+ * @param {EXPECTED_OBJECT=} params params
112
+ * @returns {Promise<EXPECTED_ANY | void>} Promise for the result
91
113
  */
92
114
  sendCommand(method, params) {
93
115
  if (this.hasSession()) {
94
116
  return new Promise((res, rej) => {
95
- this.session.post(method, params, (err, params) => {
117
+ /** @type {Session} */
118
+ (this.session).post(method, params, (err, params) => {
96
119
  if (err !== null) {
97
120
  rej(err);
98
121
  } else {
@@ -106,12 +129,16 @@ class Profiler {
106
129
 
107
130
  destroy() {
108
131
  if (this.hasSession()) {
109
- this.session.disconnect();
132
+ /** @type {Session} */
133
+ (this.session).disconnect();
110
134
  }
111
135
 
112
136
  return Promise.resolve();
113
137
  }
114
138
 
139
+ /**
140
+ * @returns {Promise<{ profile: { startTime: number, endTime: number } }>} profile result
141
+ */
115
142
  stopProfiling() {
116
143
  return this.sendCommand("Profiler.stop").then(({ profile }) => {
117
144
  const hrtime = process.hrtime();
@@ -140,7 +167,7 @@ class Profiler {
140
167
  * @property {Tracer} trace instance of Tracer
141
168
  * @property {number} counter Counter
142
169
  * @property {Profiler} profiler instance of Profiler
143
- * @property {Function} end the end function
170
+ * @property {(callback: (err?: null | Error) => void) => void} end the end function
144
171
  */
145
172
 
146
173
  /**
@@ -196,7 +223,7 @@ const createTrace = (fs, outputPath) => {
196
223
  trace,
197
224
  counter,
198
225
  profiler,
199
- end: callback => {
226
+ end: (callback) => {
200
227
  trace.push("]");
201
228
  // Wait until the write stream finishes.
202
229
  fsStream.on("close", () => {
@@ -242,9 +269,16 @@ class ProfilingPlugin {
242
269
  }
243
270
 
244
271
  for (const hookName of Object.keys(compiler.resolverFactory.hooks)) {
245
- const hook = compiler.resolverFactory.hooks[hookName];
272
+ const hook =
273
+ compiler.resolverFactory.hooks[
274
+ /** @type {keyof ResolverFactory["hooks"]} */
275
+ (hookName)
276
+ ];
246
277
  if (hook) {
247
- hook.intercept(makeInterceptorFor("Resolver", tracer)(hookName));
278
+ hook.intercept(
279
+ /** @type {EXPECTED_ANY} */
280
+ (makeInterceptorFor("Resolver", tracer)(hookName))
281
+ );
248
282
  }
249
283
  }
250
284
 
@@ -263,7 +297,9 @@ class ProfilingPlugin {
263
297
  "Context Module Factory"
264
298
  );
265
299
  interceptAllParserHooks(normalModuleFactory, tracer);
300
+ interceptAllGeneratorHooks(normalModuleFactory, tracer);
266
301
  interceptAllJavascriptModulesPluginHooks(compilation, tracer);
302
+ interceptAllCssModulesPluginHooks(compilation, tracer);
267
303
  }
268
304
  );
269
305
 
@@ -275,7 +311,7 @@ class ProfilingPlugin {
275
311
  },
276
312
  (stats, callback) => {
277
313
  if (compiler.watchMode) return callback();
278
- tracer.profiler.stopProfiling().then(parsedResults => {
314
+ tracer.profiler.stopProfiling().then((parsedResults) => {
279
315
  if (parsedResults === undefined) {
280
316
  tracer.profiler.destroy();
281
317
  tracer.end(callback);
@@ -334,15 +370,18 @@ class ProfilingPlugin {
334
370
  }
335
371
  }
336
372
 
373
+ /** @typedef {Record<string, Hook<EXPECTED_ANY, EXPECTED_ANY> | FakeHook<EXPECTED_ANY> | HookMap<EXPECTED_ANY>>} Hooks */
374
+
337
375
  /**
338
- * @param {any} instance instance
376
+ * @param {EXPECTED_OBJECT & { hooks?: Hooks }} instance instance
339
377
  * @param {Trace} tracer tracer
340
378
  * @param {string} logLabel log label
341
379
  */
342
380
  const interceptAllHooksFor = (instance, tracer, logLabel) => {
343
381
  if (Reflect.has(instance, "hooks")) {
344
- for (const hookName of Object.keys(instance.hooks)) {
345
- const hook = instance.hooks[hookName];
382
+ const hooks = /** @type {Hooks} */ (instance.hooks);
383
+ for (const hookName of Object.keys(hooks)) {
384
+ const hook = hooks[hookName];
346
385
  if (hook && !hook._fakeHook) {
347
386
  hook.intercept(makeInterceptorFor(logLabel, tracer)(hookName));
348
387
  }
@@ -356,23 +395,42 @@ const interceptAllHooksFor = (instance, tracer, logLabel) => {
356
395
  */
357
396
  const interceptAllParserHooks = (moduleFactory, tracer) => {
358
397
  const moduleTypes = [
359
- JAVASCRIPT_MODULE_TYPE_AUTO,
360
- JAVASCRIPT_MODULE_TYPE_DYNAMIC,
361
- JAVASCRIPT_MODULE_TYPE_ESM,
398
+ ...JAVASCRIPT_MODULES,
362
399
  JSON_MODULE_TYPE,
363
- WEBASSEMBLY_MODULE_TYPE_ASYNC,
364
- WEBASSEMBLY_MODULE_TYPE_SYNC
400
+ ...WEBASSEMBLY_MODULES,
401
+ ...CSS_MODULES
365
402
  ];
366
403
 
367
404
  for (const moduleType of moduleTypes) {
368
405
  moduleFactory.hooks.parser
369
406
  .for(moduleType)
370
- .tap(PLUGIN_NAME, (parser, parserOpts) => {
407
+ .tap(PLUGIN_NAME, (parser, _parserOpts) => {
371
408
  interceptAllHooksFor(parser, tracer, "Parser");
372
409
  });
373
410
  }
374
411
  };
375
412
 
413
+ /**
414
+ * @param {NormalModuleFactory} moduleFactory normal module factory
415
+ * @param {Trace} tracer tracer
416
+ */
417
+ const interceptAllGeneratorHooks = (moduleFactory, tracer) => {
418
+ const moduleTypes = [
419
+ ...JAVASCRIPT_MODULES,
420
+ JSON_MODULE_TYPE,
421
+ ...WEBASSEMBLY_MODULES,
422
+ ...CSS_MODULES
423
+ ];
424
+
425
+ for (const moduleType of moduleTypes) {
426
+ moduleFactory.hooks.generator
427
+ .for(moduleType)
428
+ .tap(PLUGIN_NAME, (parser, _parserOpts) => {
429
+ interceptAllHooksFor(parser, tracer, "Generator");
430
+ });
431
+ }
432
+ };
433
+
376
434
  /**
377
435
  * @param {Compilation} compilation compilation
378
436
  * @param {Trace} tracer tracer
@@ -391,35 +449,53 @@ const interceptAllJavascriptModulesPluginHooks = (compilation, tracer) => {
391
449
  };
392
450
 
393
451
  /**
452
+ * @param {Compilation} compilation compilation
453
+ * @param {Trace} tracer tracer
454
+ */
455
+ const interceptAllCssModulesPluginHooks = (compilation, tracer) => {
456
+ interceptAllHooksFor(
457
+ {
458
+ hooks: require("../css/CssModulesPlugin").getCompilationHooks(compilation)
459
+ },
460
+ tracer,
461
+ "CssModulesPlugin"
462
+ );
463
+ };
464
+
465
+ /** @typedef {(...args: EXPECTED_ANY[]) => EXPECTED_ANY | Promise<(...args: EXPECTED_ANY[]) => EXPECTED_ANY>} PluginFunction */
466
+
467
+ /**
468
+ * @template T
394
469
  * @param {string} instance instance
395
470
  * @param {Trace} tracer tracer
396
- * @returns {TODO} interceptor
471
+ * @returns {(hookName: string) => HookInterceptor<EXPECTED_ANY, EXPECTED_ANY>} interceptor
397
472
  */
398
- const makeInterceptorFor = (instance, tracer) => hookName => ({
399
- register: tapInfo => {
400
- const { name, type, fn } = tapInfo;
473
+ const makeInterceptorFor = (instance, tracer) => (hookName) => ({
474
+ /**
475
+ * @param {FullTap} tapInfo tap info
476
+ * @returns {FullTap} modified full tap
477
+ */
478
+ register: (tapInfo) => {
479
+ const { name, type, fn: internalFn } = tapInfo;
401
480
  const newFn =
402
481
  // Don't tap our own hooks to ensure stream can close cleanly
403
482
  name === PLUGIN_NAME
404
- ? fn
483
+ ? internalFn
405
484
  : makeNewProfiledTapFn(hookName, tracer, {
406
485
  name,
407
486
  type,
408
- fn
487
+ fn: /** @type {PluginFunction} */ (internalFn)
409
488
  });
410
489
  return { ...tapInfo, fn: newFn };
411
490
  }
412
491
  });
413
492
 
414
- // TODO improve typing
415
- /** @typedef {(...args: TODO[]) => void | Promise<TODO>} PluginFunction */
416
-
417
493
  /**
418
494
  * @param {string} hookName Name of the hook to profile.
419
495
  * @param {Trace} tracer The trace object.
420
496
  * @param {object} options Options for the profiled fn.
421
497
  * @param {string} options.name Plugin name
422
- * @param {string} options.type Plugin type (sync | async | promise)
498
+ * @param {"sync" | "async" | "promise"} options.type Plugin type (sync | async | promise)
423
499
  * @param {PluginFunction} options.fn Plugin function
424
500
  * @returns {PluginFunction} Chainable hooked function.
425
501
  */
@@ -435,8 +511,10 @@ const makeNewProfiledTapFn = (hookName, tracer, { name, type, fn }) => {
435
511
  id,
436
512
  cat: defaultCategory
437
513
  });
438
- const promise = /** @type {Promise<*>} */ (fn(...args));
439
- return promise.then(r => {
514
+ const promise =
515
+ /** @type {Promise<(...args: EXPECTED_ANY[]) => EXPECTED_ANY>} */
516
+ (fn(...args));
517
+ return promise.then((r) => {
440
518
  tracer.trace.end({
441
519
  name,
442
520
  id,
@@ -454,14 +532,20 @@ const makeNewProfiledTapFn = (hookName, tracer, { name, type, fn }) => {
454
532
  cat: defaultCategory
455
533
  });
456
534
  const callback = args.pop();
457
- fn(...args, (...r) => {
458
- tracer.trace.end({
459
- name,
460
- id,
461
- cat: defaultCategory
462
- });
463
- callback(...r);
464
- });
535
+ fn(
536
+ ...args,
537
+ /**
538
+ * @param {...EXPECTED_ANY[]} r result
539
+ */
540
+ (...r) => {
541
+ tracer.trace.end({
542
+ name,
543
+ id,
544
+ cat: defaultCategory
545
+ });
546
+ callback(...r);
547
+ }
548
+ );
465
549
  };
466
550
  case "sync":
467
551
  return (...args) => {
@@ -496,7 +580,7 @@ const makeNewProfiledTapFn = (hookName, tracer, { name, type, fn }) => {
496
580
  return r;
497
581
  };
498
582
  default:
499
- break;
583
+ return fn;
500
584
  }
501
585
  };
502
586
 
@@ -24,19 +24,19 @@ const { addLocalModule, getLocalModule } = require("./LocalModulesHelpers");
24
24
  /** @typedef {import("estree").Literal} Literal */
25
25
  /** @typedef {import("estree").MemberExpression} MemberExpression */
26
26
  /** @typedef {import("estree").ObjectExpression} ObjectExpression */
27
- /** @typedef {import("estree").SimpleCallExpression} SimpleCallExpression */
28
27
  /** @typedef {import("estree").SpreadElement} SpreadElement */
29
28
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
30
29
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
31
30
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
32
31
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
32
+ /** @typedef {import("../javascript/JavascriptParser").ExportedVariableInfo} ExportedVariableInfo */
33
33
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
34
34
 
35
35
  /**
36
36
  * @param {Expression | SpreadElement} expr expression
37
37
  * @returns {expr is CallExpression} true if it's a bound function expression
38
38
  */
39
- const isBoundFunctionExpression = expr => {
39
+ const isBoundFunctionExpression = (expr) => {
40
40
  if (expr.type !== "CallExpression") return false;
41
41
  if (expr.callee.type !== "MemberExpression") return false;
42
42
  if (expr.callee.computed) return false;
@@ -52,7 +52,7 @@ const isBoundFunctionExpression = expr => {
52
52
  * @param {Expression | SpreadElement} expr expression
53
53
  * @returns {expr is FunctionExpression | ArrowFunctionExpression} true when unbound function expression
54
54
  */
55
- const isUnboundFunctionExpression = expr => {
55
+ const isUnboundFunctionExpression = (expr) => {
56
56
  if (expr.type === "FunctionExpression") return true;
57
57
  if (expr.type === "ArrowFunctionExpression") return true;
58
58
  return false;
@@ -62,12 +62,16 @@ const isUnboundFunctionExpression = expr => {
62
62
  * @param {Expression | SpreadElement} expr expression
63
63
  * @returns {expr is FunctionExpression | ArrowFunctionExpression | CallExpression} true when callable
64
64
  */
65
- const isCallable = expr => {
65
+ const isCallable = (expr) => {
66
66
  if (isUnboundFunctionExpression(expr)) return true;
67
67
  if (isBoundFunctionExpression(expr)) return true;
68
68
  return false;
69
69
  };
70
70
 
71
+ /** @typedef {Record<number, string>} Identifiers */
72
+
73
+ const PLUGIN_NAME = "AMDDefineDependencyParserPlugin";
74
+
71
75
  class AMDDefineDependencyParserPlugin {
72
76
  /**
73
77
  * @param {JavascriptParserOptions} options parserOptions
@@ -83,17 +87,14 @@ class AMDDefineDependencyParserPlugin {
83
87
  apply(parser) {
84
88
  parser.hooks.call
85
89
  .for("define")
86
- .tap(
87
- "AMDDefineDependencyParserPlugin",
88
- this.processCallDefine.bind(this, parser)
89
- );
90
+ .tap(PLUGIN_NAME, this.processCallDefine.bind(this, parser));
90
91
  }
91
92
 
92
93
  /**
93
94
  * @param {JavascriptParser} parser the parser
94
95
  * @param {CallExpression} expr call expression
95
96
  * @param {BasicEvaluatedExpression} param param
96
- * @param {Record<number, string>} identifiers identifiers
97
+ * @param {Identifiers} identifiers identifiers
97
98
  * @param {string=} namedModule named module
98
99
  * @returns {boolean | undefined} result
99
100
  */
@@ -106,10 +107,11 @@ class AMDDefineDependencyParserPlugin {
106
107
  ["require", "module", "exports"].includes(
107
108
  /** @type {string} */ (item.string)
108
109
  )
109
- )
110
- identifiers[/** @type {number} */ (idx)] = /** @type {string} */ (
111
- item.string
112
- );
110
+ ) {
111
+ identifiers[idx] =
112
+ /** @type {string} */
113
+ (item.string);
114
+ }
113
115
  const result = this.processItem(parser, expr, item, namedModule);
114
116
  if (result === undefined) {
115
117
  this.processContext(parser, expr, item);
@@ -248,7 +250,7 @@ class AMDDefineDependencyParserPlugin {
248
250
  * @returns {boolean | undefined} result
249
251
  */
250
252
  processCallDefine(parser, expr) {
251
- /** @type {TODO} */
253
+ /** @type {Expression | SpreadElement | undefined} */
252
254
  let array;
253
255
  /** @type {FunctionExpression | ArrowFunctionExpression | CallExpression | Identifier | undefined} */
254
256
  let fn;
@@ -347,9 +349,10 @@ class AMDDefineDependencyParserPlugin {
347
349
  }
348
350
  }
349
351
  }
352
+ /** @type {Map<string, ExportedVariableInfo>} */
350
353
  const fnRenames = new Map();
351
354
  if (array) {
352
- /** @type {Record<number, string>} */
355
+ /** @type {Identifiers} */
353
356
  const identifiers = {};
354
357
  const param = parser.evaluateExpression(array);
355
358
  const result = this.processArray(
@@ -385,7 +388,7 @@ class AMDDefineDependencyParserPlugin {
385
388
  let inTry;
386
389
  if (fn && isUnboundFunctionExpression(fn)) {
387
390
  inTry = parser.scope.inTry;
388
- parser.inScope(fnParams, () => {
391
+ parser.inScope(/** @type {Identifier[]} */ (fnParams), () => {
389
392
  for (const [name, varInfo] of fnRenames) {
390
393
  parser.setVariable(name, varInfo);
391
394
  }
@@ -410,30 +413,28 @@ class AMDDefineDependencyParserPlugin {
410
413
  parser.inScope(
411
414
  /** @type {Identifier[]} */
412
415
  (object.params).filter(
413
- i => !["require", "module", "exports"].includes(i.name)
416
+ (i) => !["require", "module", "exports"].includes(i.name)
414
417
  ),
415
418
  () => {
416
419
  for (const [name, varInfo] of fnRenames) {
417
420
  parser.setVariable(name, varInfo);
418
421
  }
419
422
  parser.scope.inTry = /** @type {boolean} */ (inTry);
420
-
421
- if (object.body.type === "BlockStatement") {
422
- parser.detectMode(object.body.body);
423
- const prev = parser.prevStatement;
424
- parser.preWalkStatement(object.body);
425
- parser.prevStatement = prev;
426
- parser.walkStatement(object.body);
427
- } else {
428
- parser.walkExpression(object.body);
429
- }
423
+ parser.detectMode(object.body.body);
424
+ const prev = parser.prevStatement;
425
+ parser.preWalkStatement(object.body);
426
+ parser.prevStatement = prev;
427
+ parser.walkStatement(object.body);
430
428
  }
431
429
  );
432
430
  if (fn.arguments) {
433
431
  parser.walkExpressions(fn.arguments);
434
432
  }
435
433
  } else if (fn || obj) {
436
- parser.walkExpression(fn || obj);
434
+ parser.walkExpression(
435
+ /** @type {FunctionExpression | ArrowFunctionExpression | CallExpression | ObjectExpression | Identifier} */
436
+ (fn || obj)
437
+ );
437
438
  }
438
439
 
439
440
  const dep = this.newDefineDependency(
@@ -32,18 +32,21 @@ const ConstDependency = require("./ConstDependency");
32
32
  const LocalModuleDependency = require("./LocalModuleDependency");
33
33
  const UnsupportedDependency = require("./UnsupportedDependency");
34
34
 
35
+ /** @typedef {import("../../declarations/WebpackOptions").Amd} Amd */
35
36
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
36
- /** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
37
37
  /** @typedef {import("../Compiler")} Compiler */
38
38
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
39
39
  /** @typedef {import("../javascript/JavascriptParser")} Parser */
40
40
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
41
+ /** @typedef {import("../javascript/BasicEvaluatedExpression").GetMembers} GetMembers */
41
42
 
42
43
  const PLUGIN_NAME = "AMDPlugin";
43
44
 
45
+ /** @typedef {Exclude<Amd, false>} AmdOptions */
46
+
44
47
  class AMDPlugin {
45
48
  /**
46
- * @param {Record<string, any>} amdOptions the AMD options
49
+ * @param {AmdOptions} amdOptions the AMD options
47
50
  */
48
51
  constructor(amdOptions) {
49
52
  this.amdOptions = amdOptions;
@@ -116,13 +119,13 @@ class AMDPlugin {
116
119
 
117
120
  compilation.hooks.runtimeRequirementInTree
118
121
  .for(RuntimeGlobals.amdDefine)
119
- .tap(PLUGIN_NAME, (chunk, set) => {
122
+ .tap(PLUGIN_NAME, (chunk, _set) => {
120
123
  compilation.addRuntimeModule(chunk, new AMDDefineRuntimeModule());
121
124
  });
122
125
 
123
126
  compilation.hooks.runtimeRequirementInTree
124
127
  .for(RuntimeGlobals.amdOptions)
125
- .tap(PLUGIN_NAME, (chunk, set) => {
128
+ .tap(PLUGIN_NAME, (chunk, _set) => {
126
129
  compilation.addRuntimeModule(
127
130
  chunk,
128
131
  new AMDOptionsRuntimeModule(amdOptions)
@@ -140,7 +143,7 @@ class AMDPlugin {
140
143
  /**
141
144
  * @param {string} optionExpr option expression
142
145
  * @param {string} rootName root name
143
- * @param {function(): TODO} getMembers callback
146
+ * @param {GetMembers} getMembers callback
144
147
  */
145
148
  const tapOptionsHooks = (optionExpr, rootName, getMembers) => {
146
149
  parser.hooks.expression
@@ -153,9 +156,13 @@ class AMDPlugin {
153
156
  );
154
157
  parser.hooks.evaluateIdentifier
155
158
  .for(optionExpr)
156
- .tap(
157
- PLUGIN_NAME,
158
- evaluateToIdentifier(optionExpr, rootName, getMembers, true)
159
+ .tap(PLUGIN_NAME, (expr) =>
160
+ evaluateToIdentifier(
161
+ optionExpr,
162
+ rootName,
163
+ getMembers,
164
+ true
165
+ )(expr)
159
166
  );
160
167
  parser.hooks.evaluateTypeof
161
168
  .for(optionExpr)
@@ -173,7 +180,7 @@ class AMDPlugin {
173
180
  );
174
181
  new AMDDefineDependencyParserPlugin(parserOptions).apply(parser);
175
182
 
176
- tapOptionsHooks("define.amd", "define", () => "amd");
183
+ tapOptionsHooks("define.amd", "define", () => ["amd"]);
177
184
  tapOptionsHooks("require.amd", "require", () => ["amd"]);
178
185
  tapOptionsHooks(
179
186
  "__webpack_amd_options__",
@@ -181,7 +188,7 @@ class AMDPlugin {
181
188
  () => []
182
189
  );
183
190
 
184
- parser.hooks.expression.for("define").tap(PLUGIN_NAME, expr => {
191
+ parser.hooks.expression.for("define").tap(PLUGIN_NAME, (expr) => {
185
192
  const dep = new ConstDependency(
186
193
  RuntimeGlobals.amdDefine,
187
194
  /** @type {Range} */ (expr.range),
@@ -201,7 +208,7 @@ class AMDPlugin {
201
208
  .for("define")
202
209
  .tap(PLUGIN_NAME, evaluateToString("function"));
203
210
  parser.hooks.canRename.for("define").tap(PLUGIN_NAME, approve);
204
- parser.hooks.rename.for("define").tap(PLUGIN_NAME, expr => {
211
+ parser.hooks.rename.for("define").tap(PLUGIN_NAME, (expr) => {
205
212
  const dep = new ConstDependency(
206
213
  RuntimeGlobals.amdDefine,
207
214
  /** @type {Range} */ (expr.range),
@@ -7,6 +7,7 @@
7
7
 
8
8
  const DependencyTemplate = require("../DependencyTemplate");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
+ const LocalModuleDependency = require("./LocalModuleDependency");
10
11
  const NullDependency = require("./NullDependency");
11
12
 
12
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -16,7 +17,6 @@ const NullDependency = require("./NullDependency");
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
19
  /** @typedef {import("./AMDRequireItemDependency")} AMDRequireItemDependency */
19
- /** @typedef {import("./LocalModuleDependency")} LocalModuleDependency */
20
20
 
21
21
  class AMDRequireArrayDependency extends NullDependency {
22
22
  /**
@@ -89,14 +89,14 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
89
89
  * @returns {string} content
90
90
  */
91
91
  getContent(dep, templateContext) {
92
- const requires = dep.depsArray.map(dependency =>
92
+ const requires = dep.depsArray.map((dependency) =>
93
93
  this.contentForDependency(dependency, templateContext)
94
94
  );
95
95
  return `[${requires.join(", ")}]`;
96
96
  }
97
97
 
98
98
  /**
99
- * @param {TODO} dep the dependency for which the template should be applied
99
+ * @param {string | LocalModuleDependency | AMDRequireItemDependency} dep the dependency for which the template should be applied
100
100
  * @param {DependencyTemplateContext} templateContext the context object
101
101
  * @returns {string} content
102
102
  */
@@ -108,9 +108,10 @@ AMDRequireArrayDependency.Template = class AMDRequireArrayDependencyTemplate ext
108
108
  return dep;
109
109
  }
110
110
 
111
- if (dep.localModule) {
111
+ if (dep instanceof LocalModuleDependency) {
112
112
  return dep.localModule.variableName();
113
113
  }
114
+
114
115
  return runtimeTemplate.moduleExports({
115
116
  module: moduleGraph.getModule(dep),
116
117
  chunkGraph,
@@ -11,10 +11,11 @@ const ContextDependency = require("./ContextDependency");
11
11
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
12
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
+ /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
14
15
 
15
16
  class AMDRequireContextDependency extends ContextDependency {
16
17
  /**
17
- * @param {TODO} options options
18
+ * @param {ContextDependencyOptions} options options
18
19
  * @param {Range} range range
19
20
  * @param {Range} valueRange value range
20
21
  */