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
@@ -15,6 +15,7 @@ const { countIterable } = require("../util/IterableHelpers");
15
15
  const { first, combine } = require("../util/SetHelpers");
16
16
  const makeSerializable = require("../util/makeSerializable");
17
17
  const propertyAccess = require("../util/propertyAccess");
18
+ const { propertyName } = require("../util/propertyName");
18
19
  const { getRuntimeKey, keyToRuntime } = require("../util/runtime");
19
20
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
20
21
  const HarmonyImportDependency = require("./HarmonyImportDependency");
@@ -35,6 +36,9 @@ const processExportInfo = require("./processExportInfo");
35
36
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
36
37
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
37
38
  /** @typedef {import("../WebpackError")} WebpackError */
39
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
40
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
41
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
38
42
  /** @typedef {import("../util/Hash")} Hash */
39
43
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
40
44
 
@@ -326,10 +330,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
326
330
  * @param {string[]} ids the requested export name of the imported module
327
331
  * @param {string | null} name the export name of for this module
328
332
  * @param {Set<string>} activeExports other named exports in the module
329
- * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency>} otherStarExports other star exports in the module before this import
333
+ * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
330
334
  * @param {number} exportPresenceMode mode of checking export names
331
- * @param {HarmonyStarExportsList} allStarExports all star exports in the module
332
- * @param {Record<string, any>=} assertions import assertions
335
+ * @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
336
+ * @param {Assertions=} assertions import assertions
333
337
  */
334
338
  constructor(
335
339
  request,
@@ -752,7 +756,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
752
756
  /**
753
757
  * Returns warnings
754
758
  * @param {ModuleGraph} moduleGraph module graph
755
- * @returns {WebpackError[]} warnings
759
+ * @returns {WebpackError[] | null | undefined} warnings
756
760
  */
757
761
  getWarnings(moduleGraph) {
758
762
  const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
@@ -765,7 +769,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
765
769
  /**
766
770
  * Returns errors
767
771
  * @param {ModuleGraph} moduleGraph module graph
768
- * @returns {WebpackError[]} errors
772
+ * @returns {WebpackError[] | null | undefined} errors
769
773
  */
770
774
  getErrors(moduleGraph) {
771
775
  const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
@@ -856,6 +860,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
856
860
  return errors;
857
861
  }
858
862
 
863
+ /**
864
+ * @param {ObjectSerializerContext} context context
865
+ */
859
866
  serialize(context) {
860
867
  const { write, setCircularReference } = context;
861
868
 
@@ -870,6 +877,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
870
877
  super.serialize(context);
871
878
  }
872
879
 
880
+ /**
881
+ * @param {ObjectDeserializerContext} context context
882
+ */
873
883
  deserialize(context) {
874
884
  const { read, setCircularReference } = context;
875
885
 
@@ -1211,7 +1221,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1211
1221
  valueKey[0]
1212
1222
  )})) ${
1213
1223
  RuntimeGlobals.definePropertyGetters
1214
- }(${exportsName}, { ${JSON.stringify(
1224
+ }(${exportsName}, { ${propertyName(
1215
1225
  key
1216
1226
  )}: function() { return ${returnValue}; } });\n`;
1217
1227
  }
@@ -1251,11 +1261,17 @@ class HarmonyStarExportsList {
1251
1261
  return this.dependencies.slice();
1252
1262
  }
1253
1263
 
1264
+ /**
1265
+ * @param {ObjectSerializerContext} context context
1266
+ */
1254
1267
  serialize({ write, setCircularReference }) {
1255
1268
  setCircularReference(this);
1256
1269
  write(this.dependencies);
1257
1270
  }
1258
1271
 
1272
+ /**
1273
+ * @param {ObjectDeserializerContext} context context
1274
+ */
1259
1275
  deserialize({ read, setCircularReference }) {
1260
1276
  setCircularReference(this);
1261
1277
  this.dependencies = read();
@@ -8,6 +8,7 @@
8
8
  const InitFragment = require("../InitFragment");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const { first } = require("../util/SetHelpers");
11
+ const { propertyName } = require("../util/propertyName");
11
12
 
12
13
  /** @typedef {import("webpack-sources").Source} Source */
13
14
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
@@ -150,7 +151,7 @@ class HarmonyExportInitFragment extends InitFragment {
150
151
  );
151
152
  for (const [key, value] of orderedExportMap) {
152
153
  definitions.push(
153
- `\n/* harmony export */ ${JSON.stringify(
154
+ `\n/* harmony export */ ${propertyName(
154
155
  key
155
156
  )}: ${runtimeTemplate.returningFunction(value)}`
156
157
  );
@@ -15,8 +15,14 @@ const NullDependency = require("./NullDependency");
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
20
 
19
21
  class HarmonyExportSpecifierDependency extends NullDependency {
22
+ /**
23
+ * @param {TODO} id id
24
+ * @param {TODO} name name
25
+ */
20
26
  constructor(id, name) {
21
27
  super();
22
28
  this.id = id;
@@ -49,6 +55,9 @@ class HarmonyExportSpecifierDependency extends NullDependency {
49
55
  return false;
50
56
  }
51
57
 
58
+ /**
59
+ * @param {ObjectSerializerContext} context context
60
+ */
52
61
  serialize(context) {
53
62
  const { write } = context;
54
63
  write(this.id);
@@ -56,6 +65,9 @@ class HarmonyExportSpecifierDependency extends NullDependency {
56
65
  super.serialize(context);
57
66
  }
58
67
 
68
+ /**
69
+ * @param {ObjectDeserializerContext} context context
70
+ */
59
71
  deserialize(context) {
60
72
  const { read } = context;
61
73
  this.id = read();
@@ -5,6 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+
10
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
11
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
8
12
  /** @typedef {import("../Parser").ParserState} ParserState */
9
13
 
10
14
  /** @type {WeakMap<ParserState, boolean>} */
@@ -20,12 +24,14 @@ exports.enable = (parserState, isStrictHarmony) => {
20
24
  if (value === false) return;
21
25
  parserStateExportsState.set(parserState, true);
22
26
  if (value !== true) {
23
- parserState.module.buildMeta.exportsType = "namespace";
24
- parserState.module.buildInfo.strict = true;
25
- parserState.module.buildInfo.exportsArgument = "__webpack_exports__";
27
+ const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
28
+ buildMeta.exportsType = "namespace";
29
+ const buildInfo = /** @type {BuildInfo} */ (parserState.module.buildInfo);
30
+ buildInfo.strict = true;
31
+ buildInfo.exportsArgument = RuntimeGlobals.exports;
26
32
  if (isStrictHarmony) {
27
- parserState.module.buildMeta.strictHarmonyModule = true;
28
- parserState.module.buildInfo.moduleArgument = "__webpack_module__";
33
+ buildMeta.strictHarmonyModule = true;
34
+ buildInfo.moduleArgument = "__webpack_module__";
29
35
  }
30
36
  }
31
37
  };
@@ -24,6 +24,9 @@ const ModuleDependency = require("./ModuleDependency");
24
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
25
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
26
26
  /** @typedef {import("../WebpackError")} WebpackError */
27
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
28
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
29
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
30
  /** @typedef {import("../util/Hash")} Hash */
28
31
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
29
32
 
@@ -53,7 +56,7 @@ class HarmonyImportDependency extends ModuleDependency {
53
56
  *
54
57
  * @param {string} request request string
55
58
  * @param {number} sourceOrder source order
56
- * @param {Record<string, any>=} assertions import assertions
59
+ * @param {Assertions=} assertions import assertions
57
60
  */
58
61
  constructor(request, sourceOrder, assertions) {
59
62
  super(request);
@@ -221,6 +224,9 @@ class HarmonyImportDependency extends ModuleDependency {
221
224
  }
222
225
  }
223
226
 
227
+ /**
228
+ * @param {ObjectSerializerContext} context context
229
+ */
224
230
  serialize(context) {
225
231
  const { write } = context;
226
232
  write(this.sourceOrder);
@@ -228,6 +234,9 @@ class HarmonyImportDependency extends ModuleDependency {
228
234
  super.serialize(context);
229
235
  }
230
236
 
237
+ /**
238
+ * @param {ObjectDeserializerContext} context context
239
+ */
231
240
  deserialize(context) {
232
241
  const { read } = context;
233
242
  this.sourceOrder = read();
@@ -21,8 +21,12 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
21
21
  /** @typedef {import("estree").Identifier} Identifier */
22
22
  /** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
23
23
  /** @typedef {import("estree").ImportExpression} ImportExpression */
24
+ /** @typedef {import("estree").MemberExpression} MemberExpression */
24
25
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
26
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
27
+ /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
25
28
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
29
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
26
30
  /** @typedef {import("../optimize/InnerGraph").InnerGraph} InnerGraph */
27
31
  /** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
28
32
  /** @typedef {import("./HarmonyImportDependency")} HarmonyImportDependency */
@@ -113,19 +117,21 @@ module.exports = class HarmonyImportDependencyParserPlugin {
113
117
  parser.state.lastHarmonyImportOrder =
114
118
  (parser.state.lastHarmonyImportOrder || 0) + 1;
115
119
  const clearDep = new ConstDependency(
116
- parser.isAsiPosition(statement.range[0]) ? ";" : "",
117
- statement.range
120
+ parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
121
+ ? ";"
122
+ : "",
123
+ /** @type {Range} */ (statement.range)
118
124
  );
119
- clearDep.loc = statement.loc;
125
+ clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
120
126
  parser.state.module.addPresentationalDependency(clearDep);
121
- parser.unsetAsiPosition(statement.range[1]);
127
+ parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
122
128
  const assertions = getAssertions(statement);
123
129
  const sideEffectDep = new HarmonyImportSideEffectDependency(
124
130
  source,
125
131
  parser.state.lastHarmonyImportOrder,
126
132
  assertions
127
133
  );
128
- sideEffectDep.loc = statement.loc;
134
+ sideEffectDep.loc = /** @type {DependencyLocation} */ (statement.loc);
129
135
  parser.state.module.addDependency(sideEffectDep);
130
136
  return true;
131
137
  }
@@ -159,6 +165,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
159
165
 
160
166
  const rootInfo = rightPart.rootInfo;
161
167
  if (
168
+ typeof rootInfo === "string" ||
162
169
  !rootInfo ||
163
170
  !rootInfo.tagInfo ||
164
171
  rootInfo.tagInfo.tag !== harmonySpecifierTag
@@ -171,13 +178,15 @@ module.exports = class HarmonyImportDependencyParserPlugin {
171
178
  settings.sourceOrder,
172
179
  settings.ids.concat(members).concat([leftPart]),
173
180
  settings.name,
174
- expression.range,
181
+ /** @type {Range} */ (expression.range),
175
182
  settings.assertions,
176
183
  "in"
177
184
  );
178
185
  dep.directImport = members.length === 0;
179
- dep.asiSafe = !parser.isAsiPosition(expression.range[0]);
180
- dep.loc = expression.loc;
186
+ dep.asiSafe = !parser.isAsiPosition(
187
+ /** @type {Range} */ (expression.range)[0]
188
+ );
189
+ dep.loc = /** @type {DependencyLocation} */ (expression.loc);
181
190
  parser.state.module.addDependency(dep);
182
191
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
183
192
  return true;
@@ -192,14 +201,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
192
201
  settings.sourceOrder,
193
202
  settings.ids,
194
203
  settings.name,
195
- expr.range,
204
+ /** @type {Range} */ (expr.range),
196
205
  exportPresenceMode,
197
- settings.assertions
206
+ settings.assertions,
207
+ []
198
208
  );
209
+ dep.referencedPropertiesInDestructuring =
210
+ parser.destructuringAssignmentPropertiesFor(expr);
199
211
  dep.shorthand = parser.scope.inShorthand;
200
212
  dep.directImport = true;
201
- dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
202
- dep.loc = expr.loc;
213
+ dep.asiSafe = !parser.isAsiPosition(
214
+ /** @type {Range} */ (expr.range)[0]
215
+ );
216
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
217
+ dep.call = parser.scope.inTaggedTemplateTag;
203
218
  parser.state.module.addDependency(dep);
204
219
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
205
220
  return true;
@@ -208,7 +223,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
208
223
  .for(harmonySpecifierTag)
209
224
  .tap(
210
225
  "HarmonyImportDependencyParserPlugin",
211
- (expression, members, membersOptionals) => {
226
+ (expression, members, membersOptionals, memberRanges) => {
212
227
  const settings = /** @type {HarmonySettings} */ (
213
228
  parser.currentTagData
214
229
  );
@@ -216,6 +231,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
216
231
  members,
217
232
  membersOptionals
218
233
  );
234
+ const ranges = memberRanges.slice(
235
+ 0,
236
+ memberRanges.length - (members.length - nonOptionalMembers.length)
237
+ );
219
238
  const expr =
220
239
  nonOptionalMembers !== members
221
240
  ? getNonOptionalMemberChain(
@@ -229,12 +248,17 @@ module.exports = class HarmonyImportDependencyParserPlugin {
229
248
  settings.sourceOrder,
230
249
  ids,
231
250
  settings.name,
232
- expr.range,
251
+ /** @type {Range} */ (expr.range),
233
252
  exportPresenceMode,
234
- settings.assertions
253
+ settings.assertions,
254
+ ranges
235
255
  );
236
- dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
237
- dep.loc = expr.loc;
256
+ dep.referencedPropertiesInDestructuring =
257
+ parser.destructuringAssignmentPropertiesFor(expr);
258
+ dep.asiSafe = !parser.isAsiPosition(
259
+ /** @type {Range} */ (expr.range)[0]
260
+ );
261
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
238
262
  parser.state.module.addDependency(dep);
239
263
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
240
264
  return true;
@@ -244,7 +268,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
244
268
  .for(harmonySpecifierTag)
245
269
  .tap(
246
270
  "HarmonyImportDependencyParserPlugin",
247
- (expression, members, membersOptionals) => {
271
+ (expression, members, membersOptionals, memberRanges) => {
248
272
  const { arguments: args, callee } = expression;
249
273
  const settings = /** @type {HarmonySettings} */ (
250
274
  parser.currentTagData
@@ -253,6 +277,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
253
277
  members,
254
278
  membersOptionals
255
279
  );
280
+ const ranges = memberRanges.slice(
281
+ 0,
282
+ memberRanges.length - (members.length - nonOptionalMembers.length)
283
+ );
256
284
  const expr =
257
285
  nonOptionalMembers !== members
258
286
  ? getNonOptionalMemberChain(
@@ -266,17 +294,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
266
294
  settings.sourceOrder,
267
295
  ids,
268
296
  settings.name,
269
- expr.range,
297
+ /** @type {Range} */ (expr.range),
270
298
  exportPresenceMode,
271
- settings.assertions
299
+ settings.assertions,
300
+ ranges
272
301
  );
273
302
  dep.directImport = members.length === 0;
274
303
  dep.call = true;
275
- dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
304
+ dep.asiSafe = !parser.isAsiPosition(
305
+ /** @type {Range} */ (expr.range)[0]
306
+ );
276
307
  // only in case when we strictly follow the spec we need a special case here
277
308
  dep.namespaceObjectAsContext =
278
309
  members.length > 0 && this.strictThisContextOnImports;
279
- dep.loc = expr.loc;
310
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
280
311
  parser.state.module.addDependency(dep);
281
312
  if (args) parser.walkExpressions(args);
282
313
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
@@ -11,15 +11,20 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
- /** @typedef {import("../InitFragment")} InitFragment */
15
14
  /** @typedef {import("../Module")} Module */
16
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
16
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
18
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
+ /** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
19
19
  /** @typedef {import("../util/Hash")} Hash */
20
20
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
21
21
 
22
22
  class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
23
+ /**
24
+ * @param {TODO} request the request string
25
+ * @param {number} sourceOrder source order
26
+ * @param {Assertions=} assertions assertions
27
+ */
23
28
  constructor(request, sourceOrder, assertions) {
24
29
  super(request, sourceOrder, assertions);
25
30
  }
@@ -68,7 +73,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
68
73
  apply(dependency, source, templateContext) {
69
74
  const { moduleGraph, concatenationScope } = templateContext;
70
75
  if (concatenationScope) {
71
- const module = moduleGraph.getModule(dependency);
76
+ const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
72
77
  if (concatenationScope.isModuleInScope(module)) {
73
78
  return;
74
79
  }