webpack 5.76.1 → 5.88.2

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (442) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +6 -1
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +18 -14
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +95 -47
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DependencyTemplates.js +1 -1
  38. package/lib/DllEntryPlugin.js +16 -1
  39. package/lib/DllModule.js +17 -2
  40. package/lib/DllModuleFactory.js +1 -1
  41. package/lib/DllReferencePlugin.js +13 -1
  42. package/lib/Entrypoint.js +1 -1
  43. package/lib/ErrorHelpers.js +62 -22
  44. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  45. package/lib/ExportsInfo.js +25 -4
  46. package/lib/ExportsInfoApiPlugin.js +30 -14
  47. package/lib/ExternalModule.js +30 -9
  48. package/lib/FileSystemInfo.js +61 -25
  49. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  50. package/lib/FlagDependencyExportsPlugin.js +336 -348
  51. package/lib/FlagDependencyUsagePlugin.js +9 -9
  52. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  53. package/lib/Generator.js +7 -0
  54. package/lib/HookWebpackError.js +1 -1
  55. package/lib/HotModuleReplacementPlugin.js +60 -46
  56. package/lib/IgnoreErrorModuleFactory.js +1 -1
  57. package/lib/InitFragment.js +28 -5
  58. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  59. package/lib/LibManifestPlugin.js +22 -5
  60. package/lib/LoaderOptionsPlugin.js +12 -2
  61. package/lib/MainTemplate.js +2 -2
  62. package/lib/Module.js +44 -12
  63. package/lib/ModuleBuildError.js +9 -0
  64. package/lib/ModuleDependencyError.js +4 -2
  65. package/lib/ModuleDependencyWarning.js +4 -2
  66. package/lib/ModuleError.js +9 -0
  67. package/lib/ModuleFactory.js +1 -1
  68. package/lib/ModuleFilenameHelpers.js +114 -4
  69. package/lib/ModuleGraph.js +33 -23
  70. package/lib/ModuleGraphConnection.js +19 -6
  71. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  72. package/lib/ModuleNotFoundError.js +5 -2
  73. package/lib/ModuleParseError.js +9 -0
  74. package/lib/ModuleProfile.js +1 -0
  75. package/lib/ModuleRestoreError.js +2 -0
  76. package/lib/ModuleStoreError.js +2 -1
  77. package/lib/ModuleTypeConstants.js +169 -0
  78. package/lib/ModuleWarning.js +9 -0
  79. package/lib/MultiWatching.js +4 -0
  80. package/lib/NodeStuffPlugin.js +65 -35
  81. package/lib/NormalModule.js +12 -2
  82. package/lib/NormalModuleFactory.js +56 -8
  83. package/lib/NormalModuleReplacementPlugin.js +5 -3
  84. package/lib/NullFactory.js +1 -1
  85. package/lib/PrefetchPlugin.js +4 -0
  86. package/lib/ProgressPlugin.js +71 -15
  87. package/lib/ProvidePlugin.js +30 -14
  88. package/lib/RawModule.js +13 -2
  89. package/lib/RecordIdsPlugin.js +4 -4
  90. package/lib/RequireJsStuffPlugin.js +22 -15
  91. package/lib/RuntimeGlobals.js +5 -0
  92. package/lib/RuntimeModule.js +12 -11
  93. package/lib/RuntimePlugin.js +10 -3
  94. package/lib/RuntimeTemplate.js +29 -11
  95. package/lib/SelfModuleFactory.js +12 -0
  96. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  97. package/lib/SourceMapDevToolPlugin.js +47 -11
  98. package/lib/Template.js +5 -3
  99. package/lib/UseStrictPlugin.js +29 -11
  100. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  101. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  102. package/lib/WatchIgnorePlugin.js +4 -0
  103. package/lib/Watching.js +62 -25
  104. package/lib/WebpackError.js +14 -5
  105. package/lib/WebpackIsIncludedPlugin.js +22 -13
  106. package/lib/WebpackOptionsApply.js +41 -44
  107. package/lib/WebpackOptionsDefaulter.js +10 -3
  108. package/lib/asset/AssetGenerator.js +24 -9
  109. package/lib/asset/AssetModulesPlugin.js +28 -12
  110. package/lib/asset/AssetParser.js +15 -7
  111. package/lib/asset/AssetSourceParser.js +8 -3
  112. package/lib/asset/RawDataUrlModule.js +15 -4
  113. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  114. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  115. package/lib/buildChunkGraph.js +37 -21
  116. package/lib/cache/IdleFileCachePlugin.js +2 -1
  117. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  118. package/lib/cache/PackFileCacheStrategy.js +59 -22
  119. package/lib/cache/ResolverCachePlugin.js +3 -0
  120. package/lib/config/browserslistTargetHandler.js +10 -10
  121. package/lib/config/defaults.js +306 -105
  122. package/lib/config/normalization.js +110 -71
  123. package/lib/config/target.js +37 -10
  124. package/lib/container/ContainerEntryModule.js +11 -1
  125. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  126. package/lib/container/ContainerExposedDependency.js +9 -0
  127. package/lib/container/ContainerPlugin.js +3 -1
  128. package/lib/container/FallbackDependency.js +13 -0
  129. package/lib/container/FallbackItemDependency.js +3 -0
  130. package/lib/container/FallbackModule.js +12 -2
  131. package/lib/container/FallbackModuleFactory.js +1 -1
  132. package/lib/container/RemoteModule.js +11 -1
  133. package/lib/container/RemoteRuntimeModule.js +3 -2
  134. package/lib/container/RemoteToExternalDependency.js +3 -0
  135. package/lib/css/CssExportsGenerator.js +9 -0
  136. package/lib/css/CssGenerator.js +5 -1
  137. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  138. package/lib/css/CssModulesPlugin.js +253 -74
  139. package/lib/css/CssParser.js +697 -282
  140. package/lib/css/walkCssTokens.js +269 -138
  141. package/lib/debug/ProfilingPlugin.js +33 -12
  142. package/lib/dependencies/AMDDefineDependency.js +54 -10
  143. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  144. package/lib/dependencies/AMDPlugin.js +33 -20
  145. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  146. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  147. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  148. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  149. package/lib/dependencies/AMDRequireDependency.js +16 -1
  150. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  151. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  152. package/lib/dependencies/CachedConstDependency.js +14 -0
  153. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  154. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  155. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  156. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  157. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  158. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  159. package/lib/dependencies/CommonJsPlugin.js +51 -26
  160. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  161. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  162. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  163. package/lib/dependencies/ConstDependency.js +11 -2
  164. package/lib/dependencies/ContextDependency.js +15 -2
  165. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  166. package/lib/dependencies/ContextElementDependency.js +8 -0
  167. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  168. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  169. package/lib/dependencies/CssExportDependency.js +8 -0
  170. package/lib/dependencies/CssImportDependency.js +55 -3
  171. package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
  172. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  173. package/lib/dependencies/CssUrlDependency.js +46 -16
  174. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  175. package/lib/dependencies/DllEntryDependency.js +14 -0
  176. package/lib/dependencies/DynamicExports.js +10 -6
  177. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  178. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  179. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  180. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  181. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  182. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  183. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  184. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  185. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  186. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  187. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  188. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  189. package/lib/dependencies/HarmonyExports.js +11 -5
  190. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  191. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  192. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  193. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  194. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  195. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  196. package/lib/dependencies/ImportContextDependency.js +15 -0
  197. package/lib/dependencies/ImportDependency.js +15 -4
  198. package/lib/dependencies/ImportEagerDependency.js +7 -4
  199. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  200. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  201. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  202. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  203. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  204. package/lib/dependencies/ImportParserPlugin.js +83 -25
  205. package/lib/dependencies/ImportPlugin.js +21 -7
  206. package/lib/dependencies/ImportWeakDependency.js +7 -4
  207. package/lib/dependencies/JsonExportsDependency.js +9 -1
  208. package/lib/dependencies/LocalModule.js +16 -0
  209. package/lib/dependencies/LocalModuleDependency.js +15 -0
  210. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  211. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  212. package/lib/dependencies/ModuleDependency.js +9 -1
  213. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  214. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  215. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  216. package/lib/dependencies/PrefetchDependency.js +3 -0
  217. package/lib/dependencies/ProvidedDependency.js +14 -2
  218. package/lib/dependencies/PureExpressionDependency.js +10 -1
  219. package/lib/dependencies/RequireContextDependency.js +6 -0
  220. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  221. package/lib/dependencies/RequireContextPlugin.js +19 -6
  222. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  223. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  224. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  225. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  226. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  227. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  228. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  229. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  230. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  231. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  232. package/lib/dependencies/RequireResolveDependency.js +6 -0
  233. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  234. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  235. package/lib/dependencies/StaticExportsDependency.js +8 -0
  236. package/lib/dependencies/SystemPlugin.js +48 -21
  237. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  238. package/lib/dependencies/URLDependency.js +13 -4
  239. package/lib/dependencies/URLPlugin.js +31 -18
  240. package/lib/dependencies/UnsupportedDependency.js +13 -0
  241. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  242. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  243. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  244. package/lib/dependencies/WorkerDependency.js +47 -3
  245. package/lib/dependencies/WorkerPlugin.js +105 -32
  246. package/lib/dependencies/getFunctionExpression.js +7 -0
  247. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  248. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  249. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  250. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  251. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  252. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  253. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  254. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  255. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  256. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  257. package/lib/ids/IdHelpers.js +6 -0
  258. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  259. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  260. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  261. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  262. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  263. package/lib/index.js +8 -0
  264. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  265. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  266. package/lib/javascript/ChunkHelpers.js +2 -2
  267. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  268. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  269. package/lib/javascript/JavascriptModulesPlugin.js +217 -198
  270. package/lib/javascript/JavascriptParser.js +941 -256
  271. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  272. package/lib/javascript/StartupHelpers.js +2 -2
  273. package/lib/json/JsonData.js +26 -1
  274. package/lib/json/JsonGenerator.js +21 -7
  275. package/lib/json/JsonModulesPlugin.js +14 -5
  276. package/lib/json/JsonParser.js +27 -13
  277. package/lib/library/AbstractLibraryPlugin.js +4 -0
  278. package/lib/library/AmdLibraryPlugin.js +22 -6
  279. package/lib/library/AssignLibraryPlugin.js +19 -5
  280. package/lib/library/EnableLibraryPlugin.js +4 -0
  281. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  282. package/lib/library/ModuleLibraryPlugin.js +8 -4
  283. package/lib/library/SystemLibraryPlugin.js +2 -1
  284. package/lib/library/UmdLibraryPlugin.js +24 -2
  285. package/lib/logging/runtime.js +1 -1
  286. package/lib/logging/truncateArgs.js +4 -0
  287. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  288. package/lib/node/NodeTargetPlugin.js +3 -0
  289. package/lib/node/NodeTemplatePlugin.js +10 -2
  290. package/lib/node/NodeWatchFileSystem.js +1 -1
  291. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  292. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  293. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  294. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  295. package/lib/node/nodeConsole.js +2 -4
  296. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  297. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  298. package/lib/optimize/ConcatenatedModule.js +8 -6
  299. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  300. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  301. package/lib/optimize/InnerGraph.js +5 -5
  302. package/lib/optimize/InnerGraphPlugin.js +57 -48
  303. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  304. package/lib/optimize/MangleExportsPlugin.js +1 -1
  305. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  306. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  307. package/lib/optimize/RealContentHashPlugin.js +86 -30
  308. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  309. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  310. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  311. package/lib/optimize/SplitChunksPlugin.js +71 -31
  312. package/lib/performance/SizeLimitsPlugin.js +7 -4
  313. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  314. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  315. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  316. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  317. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  318. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  319. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  320. package/lib/rules/RuleSetCompiler.js +3 -3
  321. package/lib/rules/UseEffectRulePlugin.js +6 -4
  322. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  323. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  324. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  325. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  326. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  327. package/lib/runtime/CompatRuntimeModule.js +7 -2
  328. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  329. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  330. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  331. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  332. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  333. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  334. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  335. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  336. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  337. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  338. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  339. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  340. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  341. package/lib/runtime/NonceRuntimeModule.js +1 -1
  342. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  343. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  344. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  345. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  346. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  347. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  348. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  349. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  350. package/lib/schemes/DataUriPlugin.js +16 -3
  351. package/lib/schemes/HttpUriPlugin.js +38 -0
  352. package/lib/serialization/ArraySerializer.js +22 -6
  353. package/lib/serialization/BinaryMiddleware.js +164 -1
  354. package/lib/serialization/DateObjectSerializer.js +15 -4
  355. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  356. package/lib/serialization/FileMiddleware.js +17 -0
  357. package/lib/serialization/MapObjectSerializer.js +24 -8
  358. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  359. package/lib/serialization/ObjectMiddleware.js +33 -2
  360. package/lib/serialization/PlainObjectSerializer.js +23 -12
  361. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  362. package/lib/serialization/SetObjectSerializer.js +21 -6
  363. package/lib/serialization/types.js +1 -1
  364. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  365. package/lib/sharing/ConsumeSharedModule.js +13 -2
  366. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  367. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  368. package/lib/sharing/ProvideSharedDependency.js +17 -0
  369. package/lib/sharing/ProvideSharedModule.js +11 -1
  370. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  371. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  372. package/lib/sharing/ShareRuntimeModule.js +19 -9
  373. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  374. package/lib/sharing/utils.js +320 -7
  375. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  376. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  377. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  378. package/lib/util/AsyncQueue.js +4 -2
  379. package/lib/util/LazySet.js +10 -2
  380. package/lib/util/MapHelpers.js +19 -5
  381. package/lib/util/ParallelismFactorCalculator.js +10 -0
  382. package/lib/util/Semaphore.js +1 -1
  383. package/lib/util/StackedCacheMap.js +7 -1
  384. package/lib/util/StringXor.js +51 -0
  385. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  386. package/lib/util/binarySearchBounds.js +49 -0
  387. package/lib/util/compileBooleanMatcher.js +31 -0
  388. package/lib/util/createHash.js +35 -13
  389. package/lib/util/deprecation.js +18 -3
  390. package/lib/util/deterministicGrouping.js +50 -11
  391. package/lib/util/findGraphRoots.js +4 -2
  392. package/lib/util/hash/md4.js +2 -2
  393. package/lib/util/hash/xxhash64.js +1 -1
  394. package/lib/util/identifier.js +4 -0
  395. package/lib/util/internalSerializables.js +1 -0
  396. package/lib/util/makeSerializable.js +7 -0
  397. package/lib/util/memoize.js +3 -3
  398. package/lib/util/numberHash.js +75 -21
  399. package/lib/util/processAsyncTree.js +7 -1
  400. package/lib/util/propertyAccess.js +9 -54
  401. package/lib/util/propertyName.js +79 -0
  402. package/lib/util/registerExternalSerializer.js +1 -1
  403. package/lib/util/runtime.js +84 -21
  404. package/lib/util/semver.js +2 -1
  405. package/lib/util/serialization.js +10 -0
  406. package/lib/util/smartGrouping.js +1 -1
  407. package/lib/validateSchema.js +6 -2
  408. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  409. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  410. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  411. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  412. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  413. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  414. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  415. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  416. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  417. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  418. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  419. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  420. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  421. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  422. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  423. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  424. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  425. package/lib/webpack.js +12 -3
  426. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  427. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  428. package/module.d.ts +55 -37
  429. package/package.json +59 -56
  430. package/schemas/WebpackOptions.check.js +1 -1
  431. package/schemas/WebpackOptions.json +133 -6
  432. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  433. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  434. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  435. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  436. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  437. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  438. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  439. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  440. package/schemas/plugins/css/CssParserOptions.json +1 -1
  441. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  442. package/types.d.ts +1629 -683
@@ -29,8 +29,14 @@ const RequireResolveContextDependency = require("./RequireResolveContextDependen
29
29
  const RequireResolveDependency = require("./RequireResolveDependency");
30
30
  const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
31
31
 
32
- /** @typedef {import("estree").CallExpression} CallExpressionNode */
32
+ /** @typedef {import("estree").CallExpression} CallExpression */
33
+ /** @typedef {import("estree").Expression} Expression */
34
+ /** @typedef {import("estree").NewExpression} NewExpression */
33
35
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
36
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
37
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
38
+ /** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
39
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
34
40
 
35
41
  const createRequireSpecifierTag = Symbol("createRequire");
36
42
  const createdRequireIdentifierTag = Symbol("createRequire()");
@@ -43,6 +49,10 @@ class CommonJsImportsParserPlugin {
43
49
  this.options = options;
44
50
  }
45
51
 
52
+ /**
53
+ * @param {JavascriptParser} parser the parser
54
+ * @returns {void}
55
+ */
46
56
  apply(parser) {
47
57
  const options = this.options;
48
58
 
@@ -54,6 +64,10 @@ class CommonJsImportsParserPlugin {
54
64
  };
55
65
 
56
66
  //#region metadata
67
+ /**
68
+ * @param {TODO} expression expression
69
+ * @param {() => string[]} getMembers get members
70
+ */
57
71
  const tapRequireExpression = (expression, getMembers) => {
58
72
  parser.hooks.typeof
59
73
  .for(expression)
@@ -71,6 +85,9 @@ class CommonJsImportsParserPlugin {
71
85
  evaluateToIdentifier(expression, "require", getMembers, true)
72
86
  );
73
87
  };
88
+ /**
89
+ * @param {string | symbol} tag tag
90
+ */
74
91
  const tapRequireExpressionTag = tag => {
75
92
  parser.hooks.typeof
76
93
  .for(tag)
@@ -93,7 +110,7 @@ class CommonJsImportsParserPlugin {
93
110
  .tap("CommonJsImportsParserPlugin", expr => {
94
111
  // to not leak to global "require", we need to define a local require here.
95
112
  const dep = new ConstDependency("var require;", 0);
96
- dep.loc = expr.loc;
113
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
97
114
  parser.state.module.addPresentationalDependency(dep);
98
115
  return true;
99
116
  });
@@ -138,10 +155,17 @@ class CommonJsImportsParserPlugin {
138
155
  //#endregion
139
156
 
140
157
  //#region Renaming
158
+ /**
159
+ * @param {Expression} expr expression
160
+ * @returns {boolean} true when set undefined
161
+ */
141
162
  const defineUndefined = expr => {
142
163
  // To avoid "not defined" error, replace the value with undefined
143
- const dep = new ConstDependency("undefined", expr.range);
144
- dep.loc = expr.loc;
164
+ const dep = new ConstDependency(
165
+ "undefined",
166
+ /** @type {Range} */ (expr.range)
167
+ );
168
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
145
169
  parser.state.module.addPresentationalDependency(dep);
146
170
  return false;
147
171
  };
@@ -170,6 +194,10 @@ class CommonJsImportsParserPlugin {
170
194
  //#endregion
171
195
 
172
196
  //#region Require as expression
197
+ /**
198
+ * @param {Expression} expr expression
199
+ * @returns {boolean} true when handled
200
+ */
173
201
  const requireAsExpressionHandler = expr => {
174
202
  const dep = new CommonJsRequireContextDependency(
175
203
  {
@@ -178,7 +206,7 @@ class CommonJsImportsParserPlugin {
178
206
  regExp: options.unknownContextRegExp,
179
207
  mode: "sync"
180
208
  },
181
- expr.range,
209
+ /** @type {Range} */ (expr.range),
182
210
  undefined,
183
211
  parser.scope.inShorthand,
184
212
  getContext()
@@ -186,7 +214,7 @@ class CommonJsImportsParserPlugin {
186
214
  dep.critical =
187
215
  options.unknownContextCritical &&
188
216
  "require function is used in a way in which dependencies cannot be statically extracted";
189
- dep.loc = expr.loc;
217
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
190
218
  dep.optional = !!parser.scope.inTry;
191
219
  parser.state.current.addDependency(dep);
192
220
  return true;
@@ -197,23 +225,33 @@ class CommonJsImportsParserPlugin {
197
225
  //#endregion
198
226
 
199
227
  //#region Require
228
+ /**
229
+ * @param {CallExpression | NewExpression} expr expression
230
+ * @param {BasicEvaluatedExpression} param param
231
+ * @returns {boolean | void} true when handled
232
+ */
200
233
  const processRequireItem = (expr, param) => {
201
234
  if (param.isString()) {
202
235
  const dep = new CommonJsRequireDependency(
203
- param.string,
204
- param.range,
236
+ /** @type {string} */ (param.string),
237
+ /** @type {Range} */ (param.range),
205
238
  getContext()
206
239
  );
207
- dep.loc = expr.loc;
240
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
208
241
  dep.optional = !!parser.scope.inTry;
209
242
  parser.state.current.addDependency(dep);
210
243
  return true;
211
244
  }
212
245
  };
246
+ /**
247
+ * @param {CallExpression | NewExpression} expr expression
248
+ * @param {BasicEvaluatedExpression} param param
249
+ * @returns {boolean | void} true when handled
250
+ */
213
251
  const processRequireContext = (expr, param) => {
214
252
  const dep = ContextDependencyHelpers.create(
215
253
  CommonJsRequireContextDependency,
216
- expr.range,
254
+ /** @type {Range} */ (expr.range),
217
255
  param,
218
256
  expr,
219
257
  options,
@@ -225,15 +263,19 @@ class CommonJsImportsParserPlugin {
225
263
  getContext()
226
264
  );
227
265
  if (!dep) return;
228
- dep.loc = expr.loc;
266
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
229
267
  dep.optional = !!parser.scope.inTry;
230
268
  parser.state.current.addDependency(dep);
231
269
  return true;
232
270
  };
271
+ /**
272
+ * @param {boolean} callNew true, when require is called with new
273
+ * @returns {(expr: CallExpression | NewExpression) => (boolean | void)} handler
274
+ */
233
275
  const createRequireHandler = callNew => expr => {
234
276
  if (options.commonjsMagicComments) {
235
277
  const { options: requireOptions, errors: commentErrors } =
236
- parser.parseCommentOptions(expr.range);
278
+ parser.parseCommentOptions(/** @type {Range} */ (expr.range));
237
279
 
238
280
  if (commentErrors) {
239
281
  for (const e of commentErrors) {
@@ -252,7 +294,7 @@ class CommonJsImportsParserPlugin {
252
294
  parser.state.module.addWarning(
253
295
  new UnsupportedFeatureWarning(
254
296
  `\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
255
- expr.loc
297
+ /** @type {DependencyLocation} */ (expr.loc)
256
298
  )
257
299
  );
258
300
  } else {
@@ -270,26 +312,37 @@ class CommonJsImportsParserPlugin {
270
312
  const param = parser.evaluateExpression(expr.arguments[0]);
271
313
  if (param.isConditional()) {
272
314
  let isExpression = false;
273
- for (const p of param.options) {
315
+ for (const p of /** @type {BasicEvaluatedExpression[]} */ (
316
+ param.options
317
+ )) {
274
318
  const result = processRequireItem(expr, p);
275
319
  if (result === undefined) {
276
320
  isExpression = true;
277
321
  }
278
322
  }
279
323
  if (!isExpression) {
280
- const dep = new RequireHeaderDependency(expr.callee.range);
281
- dep.loc = expr.loc;
324
+ const dep = new RequireHeaderDependency(
325
+ /** @type {Range} */ (expr.callee.range)
326
+ );
327
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
282
328
  parser.state.module.addPresentationalDependency(dep);
283
329
  return true;
284
330
  }
285
331
  }
286
332
  if (
287
333
  param.isString() &&
288
- (localModule = getLocalModule(parser.state, param.string))
334
+ (localModule = getLocalModule(
335
+ parser.state,
336
+ /** @type {string} */ (param.string)
337
+ ))
289
338
  ) {
290
339
  localModule.flagUsed();
291
- const dep = new LocalModuleDependency(localModule, expr.range, callNew);
292
- dep.loc = expr.loc;
340
+ const dep = new LocalModuleDependency(
341
+ localModule,
342
+ /** @type {Range} */ (expr.range),
343
+ callNew
344
+ );
345
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
293
346
  parser.state.module.addPresentationalDependency(dep);
294
347
  return true;
295
348
  } else {
@@ -297,8 +350,10 @@ class CommonJsImportsParserPlugin {
297
350
  if (result === undefined) {
298
351
  processRequireContext(expr, param);
299
352
  } else {
300
- const dep = new RequireHeaderDependency(expr.callee.range);
301
- dep.loc = expr.loc;
353
+ const dep = new RequireHeaderDependency(
354
+ /** @type {Range} */ (expr.callee.range)
355
+ );
356
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
302
357
  parser.state.module.addPresentationalDependency(dep);
303
358
  }
304
359
  return true;
@@ -319,35 +374,59 @@ class CommonJsImportsParserPlugin {
319
374
  //#endregion
320
375
 
321
376
  //#region Require with property access
377
+ /**
378
+ * @param {Expression} expr expression
379
+ * @param {string[]} calleeMembers callee members
380
+ * @param {CallExpression} callExpr call expression
381
+ * @param {string[]} members members
382
+ * @returns {boolean | void} true when handled
383
+ */
322
384
  const chainHandler = (expr, calleeMembers, callExpr, members) => {
323
385
  if (callExpr.arguments.length !== 1) return;
324
386
  const param = parser.evaluateExpression(callExpr.arguments[0]);
325
- if (param.isString() && !getLocalModule(parser.state, param.string)) {
387
+ if (
388
+ param.isString() &&
389
+ !getLocalModule(parser.state, /** @type {string} */ (param.string))
390
+ ) {
326
391
  const dep = new CommonJsFullRequireDependency(
327
- param.string,
328
- expr.range,
392
+ /** @type {string} */ (param.string),
393
+ /** @type {Range} */ (expr.range),
329
394
  members
330
395
  );
331
- dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
396
+ dep.asiSafe = !parser.isAsiPosition(
397
+ /** @type {Range} */ (expr.range)[0]
398
+ );
332
399
  dep.optional = !!parser.scope.inTry;
333
- dep.loc = expr.loc;
400
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
334
401
  parser.state.current.addDependency(dep);
335
402
  return true;
336
403
  }
337
404
  };
405
+ /**
406
+ * @param {CallExpression} expr expression
407
+ * @param {string[]} calleeMembers callee members
408
+ * @param {CallExpression} callExpr call expression
409
+ * @param {string[]} members members
410
+ * @returns {boolean | void} true when handled
411
+ */
338
412
  const callChainHandler = (expr, calleeMembers, callExpr, members) => {
339
413
  if (callExpr.arguments.length !== 1) return;
340
414
  const param = parser.evaluateExpression(callExpr.arguments[0]);
341
- if (param.isString() && !getLocalModule(parser.state, param.string)) {
415
+ if (
416
+ param.isString() &&
417
+ !getLocalModule(parser.state, /** @type {string} */ (param.string))
418
+ ) {
342
419
  const dep = new CommonJsFullRequireDependency(
343
- param.string,
344
- expr.callee.range,
420
+ /** @type {string} */ (param.string),
421
+ /** @type {Range} */ (expr.callee.range),
345
422
  members
346
423
  );
347
424
  dep.call = true;
348
- dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
425
+ dep.asiSafe = !parser.isAsiPosition(
426
+ /** @type {Range} */ (expr.range)[0]
427
+ );
349
428
  dep.optional = !!parser.scope.inTry;
350
- dep.loc = expr.callee.loc;
429
+ dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
351
430
  parser.state.current.addDependency(dep);
352
431
  parser.walkExpressions(expr.arguments);
353
432
  return true;
@@ -368,18 +447,27 @@ class CommonJsImportsParserPlugin {
368
447
  //#endregion
369
448
 
370
449
  //#region Require.resolve
450
+ /**
451
+ * @param {CallExpression} expr call expression
452
+ * @param {boolean} weak weak
453
+ * @returns {boolean | void} true when handled
454
+ */
371
455
  const processResolve = (expr, weak) => {
372
456
  if (expr.arguments.length !== 1) return;
373
457
  const param = parser.evaluateExpression(expr.arguments[0]);
374
458
  if (param.isConditional()) {
375
- for (const option of param.options) {
459
+ for (const option of /** @type {BasicEvaluatedExpression[]} */ (
460
+ param.options
461
+ )) {
376
462
  const result = processResolveItem(expr, option, weak);
377
463
  if (result === undefined) {
378
464
  processResolveContext(expr, option, weak);
379
465
  }
380
466
  }
381
- const dep = new RequireResolveHeaderDependency(expr.callee.range);
382
- dep.loc = expr.loc;
467
+ const dep = new RequireResolveHeaderDependency(
468
+ /** @type {Range} */ (expr.callee.range)
469
+ );
470
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
383
471
  parser.state.module.addPresentationalDependency(dep);
384
472
  return true;
385
473
  } else {
@@ -387,30 +475,44 @@ class CommonJsImportsParserPlugin {
387
475
  if (result === undefined) {
388
476
  processResolveContext(expr, param, weak);
389
477
  }
390
- const dep = new RequireResolveHeaderDependency(expr.callee.range);
391
- dep.loc = expr.loc;
478
+ const dep = new RequireResolveHeaderDependency(
479
+ /** @type {Range} */ (expr.callee.range)
480
+ );
481
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
392
482
  parser.state.module.addPresentationalDependency(dep);
393
483
  return true;
394
484
  }
395
485
  };
486
+ /**
487
+ * @param {CallExpression} expr call expression
488
+ * @param {BasicEvaluatedExpression} param param
489
+ * @param {boolean} weak weak
490
+ * @returns {boolean | void} true when handled
491
+ */
396
492
  const processResolveItem = (expr, param, weak) => {
397
493
  if (param.isString()) {
398
494
  const dep = new RequireResolveDependency(
399
- param.string,
400
- param.range,
495
+ /** @type {string} */ (param.string),
496
+ /** @type {Range} */ (param.range),
401
497
  getContext()
402
498
  );
403
- dep.loc = expr.loc;
499
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
404
500
  dep.optional = !!parser.scope.inTry;
405
501
  dep.weak = weak;
406
502
  parser.state.current.addDependency(dep);
407
503
  return true;
408
504
  }
409
505
  };
506
+ /**
507
+ * @param {CallExpression} expr call expression
508
+ * @param {BasicEvaluatedExpression} param param
509
+ * @param {boolean} weak weak
510
+ * @returns {boolean | void} true when handled
511
+ */
410
512
  const processResolveContext = (expr, param, weak) => {
411
513
  const dep = ContextDependencyHelpers.create(
412
514
  RequireResolveContextDependency,
413
- param.range,
515
+ /** @type {Range} */ (param.range),
414
516
  param,
415
517
  expr,
416
518
  options,
@@ -422,7 +524,7 @@ class CommonJsImportsParserPlugin {
422
524
  getContext()
423
525
  );
424
526
  if (!dep) return;
425
- dep.loc = expr.loc;
527
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
426
528
  dep.optional = !!parser.scope.inTry;
427
529
  parser.state.current.addDependency(dep);
428
530
  return true;
@@ -444,13 +546,16 @@ class CommonJsImportsParserPlugin {
444
546
 
445
547
  if (!options.createRequire) return;
446
548
 
447
- let moduleName;
549
+ /** @type {ImportSource[]} */
550
+ let moduleName = [];
551
+ /** @type {string | undefined} */
448
552
  let specifierName;
449
553
 
450
554
  if (options.createRequire === true) {
451
- moduleName = "module";
555
+ moduleName = ["module", "node:module"];
452
556
  specifierName = "createRequire";
453
557
  } else {
558
+ let moduleName;
454
559
  const match = /^(.*) from (.*)$/.exec(options.createRequire);
455
560
  if (match) {
456
561
  [, specifierName, moduleName] = match;
@@ -480,9 +585,13 @@ class CommonJsImportsParserPlugin {
480
585
  next: undefined
481
586
  });
482
587
  return new BasicEvaluatedExpression()
483
- .setIdentifier(ident, ident, () => [])
588
+ .setIdentifier(
589
+ /** @type {TODO} */ (ident),
590
+ /** @type {TODO} */ (ident),
591
+ () => []
592
+ )
484
593
  .setSideEffects(false)
485
- .setRange(expr.range);
594
+ .setRange(/** @type {Range} */ (expr.range));
486
595
  });
487
596
  parser.hooks.unhandledExpressionMemberChain
488
597
  .for(createdRequireIdentifierTag)
@@ -508,8 +617,8 @@ class CommonJsImportsParserPlugin {
508
617
  .for(createdRequireIdentifierTag)
509
618
  .tap("CommonJsImportsParserPlugin", createRequireHandler(false));
510
619
  /**
511
- * @param {CallExpressionNode} expr call expression
512
- * @returns {string} context
620
+ * @param {CallExpression} expr call expression
621
+ * @returns {string | void} context
513
622
  */
514
623
  const parseCreateRequireArguments = expr => {
515
624
  const args = expr.arguments;
@@ -517,7 +626,7 @@ class CommonJsImportsParserPlugin {
517
626
  const err = new WebpackError(
518
627
  "module.createRequire supports only one argument."
519
628
  );
520
- err.loc = expr.loc;
629
+ err.loc = /** @type {DependencyLocation} */ (expr.loc);
521
630
  parser.state.module.addWarning(err);
522
631
  return;
523
632
  }
@@ -527,13 +636,13 @@ class CommonJsImportsParserPlugin {
527
636
  const err = new WebpackError(
528
637
  "module.createRequire failed parsing argument."
529
638
  );
530
- err.loc = arg.loc;
639
+ err.loc = /** @type {DependencyLocation} */ (arg.loc);
531
640
  parser.state.module.addWarning(err);
532
641
  return;
533
642
  }
534
- const ctx = evaluated.string.startsWith("file://")
535
- ? fileURLToPath(evaluated.string)
536
- : evaluated.string;
643
+ const ctx = /** @type {string} */ (evaluated.string).startsWith("file://")
644
+ ? fileURLToPath(/** @type {string} */ (evaluated.string))
645
+ : /** @type {string} */ (evaluated.string);
537
646
  // argument always should be a filename
538
647
  return ctx.slice(0, ctx.lastIndexOf(ctx.startsWith("/") ? "/" : "\\"));
539
648
  };
@@ -545,7 +654,7 @@ class CommonJsImportsParserPlugin {
545
654
  },
546
655
  (statement, source) => {
547
656
  if (
548
- source !== moduleName ||
657
+ !moduleName.includes(source) ||
549
658
  statement.specifiers.length !== 1 ||
550
659
  statement.specifiers[0].type !== "ImportSpecifier" ||
551
660
  statement.specifiers[0].imported.type !== "Identifier" ||
@@ -555,12 +664,14 @@ class CommonJsImportsParserPlugin {
555
664
  // clear for 'import { createRequire as x } from "module"'
556
665
  // if any other specifier was used import module
557
666
  const clearDep = new ConstDependency(
558
- parser.isAsiPosition(statement.range[0]) ? ";" : "",
559
- statement.range
667
+ parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
668
+ ? ";"
669
+ : "",
670
+ /** @type {Range} */ (statement.range)
560
671
  );
561
- clearDep.loc = statement.loc;
672
+ clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
562
673
  parser.state.module.addPresentationalDependency(clearDep);
563
- parser.unsetAsiPosition(statement.range[1]);
674
+ parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
564
675
  return true;
565
676
  }
566
677
  );
@@ -570,7 +681,7 @@ class CommonJsImportsParserPlugin {
570
681
  stage: -10
571
682
  },
572
683
  (statement, source, id, name) => {
573
- if (source !== moduleName || id !== specifierName) return;
684
+ if (!moduleName.includes(source) || id !== specifierName) return;
574
685
  parser.tagVariable(name, createRequireSpecifierTag);
575
686
  return true;
576
687
  }
@@ -585,9 +696,9 @@ class CommonJsImportsParserPlugin {
585
696
  declarator.init.callee.type !== "Identifier"
586
697
  )
587
698
  return;
588
- const variableInfo = parser.getVariableInfo(
589
- declarator.init.callee.name
590
- );
699
+ const variableInfo =
700
+ /** @type {TODO} */
701
+ (parser.getVariableInfo(declarator.init.callee.name));
591
702
  if (
592
703
  variableInfo &&
593
704
  variableInfo.tagInfo &&
@@ -657,9 +768,9 @@ class CommonJsImportsParserPlugin {
657
768
  .tap("CommonJsImportsParserPlugin", expr => {
658
769
  const clearDep = new ConstDependency(
659
770
  "/* createRequire() */ undefined",
660
- expr.range
771
+ /** @type {Range} */ (expr.range)
661
772
  );
662
- clearDep.loc = expr.loc;
773
+ clearDep.loc = /** @type {DependencyLocation} */ (expr.loc);
663
774
  parser.state.module.addPresentationalDependency(clearDep);
664
775
  return true;
665
776
  });