@depup/webpack 5.109.2-depup.0 → 5.110.1-depup.0

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 (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -7,7 +7,7 @@
7
7
 
8
8
  const { pathToFileURL } = require("url");
9
9
  const { SyncBailHook } = require("tapable");
10
- /** @typedef {import("../Compilation")} Compilation */
10
+ /** @import Compilation from "../Compilation" */
11
11
  const DefinePlugin = require("../DefinePlugin");
12
12
  const {
13
13
  JAVASCRIPT_MODULE_TYPE_AUTO,
@@ -25,6 +25,7 @@ const {
25
25
  const { getInnerGraphUtils } = require("../optimize/InnerGraph");
26
26
  const createHooksRegistry = require("../util/createHooksRegistry");
27
27
  const { propertyAccess } = require("../util/property");
28
+ const BuildTimeConstDependency = require("./BuildTimeConstDependency");
28
29
  const ConstDependency = require("./ConstDependency");
29
30
  const ImportMetaResolveDependency = require("./ImportMetaResolveDependency");
30
31
  const ModuleInitFragmentDependency = require("./ModuleInitFragmentDependency");
@@ -36,23 +37,37 @@ const WEBPACK_VERSION = Number.parseInt(
36
37
  10
37
38
  );
38
39
 
39
- /** @typedef {import("estree").MemberExpression} MemberExpression */
40
- /** @typedef {import("estree").Identifier} Identifier */
41
- /** @typedef {import("estree").CallExpression} CallExpression */
42
- /** @typedef {import("estree").Expression} Expression */
43
- /** @typedef {import("estree").Super} Super */
44
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
45
- /** @typedef {import("../Compiler")} Compiler */
46
- /** @typedef {import("../DefinePlugin").MergedDefinitionNode} MergedDefinitionNode */
47
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
48
- /** @typedef {import("../Module").ValueCacheVersion} ValueCacheVersion */
49
- /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
50
- /** @typedef {import("../NormalModule")} NormalModule */
51
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
52
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
53
- /** @typedef {import("../javascript/JavascriptParser").Members} Members */
54
- /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
55
- /** @typedef {import("./ConstDependency").RawRuntimeRequirements} RawRuntimeRequirements */
40
+ /**
41
+ * @import {
42
+ * MemberExpression,
43
+ * Identifier,
44
+ * CallExpression,
45
+ * Expression,
46
+ * Super
47
+ * } from "estree"
48
+ */
49
+ /**
50
+ * @import {
51
+ * JavascriptParserOptions
52
+ * } from "../../declarations/WebpackOptions"
53
+ */
54
+ /** @import Compiler from "../Compiler" */
55
+ /** @import { MergedDefinitionNode } from "../DefinePlugin" */
56
+ /** @import { ValueCacheVersion } from "../Module" */
57
+ /** @import NormalModule, { NormalModuleBuildInfo } from "../NormalModule" */
58
+ /**
59
+ * @import {
60
+ * JavascriptModuleBuildInfo
61
+ * } from "../javascript/JavascriptModule"
62
+ */
63
+ /**
64
+ * @import Parser, {
65
+ * Range,
66
+ * Members,
67
+ * DestructuringAssignmentProperty
68
+ * } from "../javascript/JavascriptParser"
69
+ */
70
+ /** @import { RawRuntimeRequirements } from "./NullDependency" */
56
71
 
57
72
  const PLUGIN_NAME = "ImportMetaPlugin";
58
73
 
@@ -138,6 +153,18 @@ const isImportMetaFieldEnabled = (importMeta, field) => {
138
153
  );
139
154
  };
140
155
 
156
+ /**
157
+ * Renders the `import.meta.main` comparison and bails out of scope hoisting.
158
+ * @param {Parser} parser the parser
159
+ * @returns {string} the comparison expression
160
+ */
161
+ const renderImportMetaMain = (parser) => {
162
+ const currentModule = parser.state.module;
163
+ /** @type {JavascriptModuleBuildInfo} */
164
+ (currentModule.buildInfo).moduleConcatenationBailout = IMPORT_META_MAIN;
165
+ return `${RuntimeGlobals.moduleCache}[${RuntimeGlobals.entryModuleId}] === ${currentModule.moduleArgument}`;
166
+ };
167
+
141
168
  /**
142
169
  * Checks whether the callee is the `import.meta.resolve` member.
143
170
  * @param {Expression | Super} callee call callee
@@ -230,6 +257,10 @@ class ImportMetaPlugin {
230
257
  ImportMetaResolveDependency,
231
258
  new ImportMetaResolveDependency.Template()
232
259
  );
260
+ compilation.dependencyTemplates.set(
261
+ BuildTimeConstDependency,
262
+ new BuildTimeConstDependency.Template()
263
+ );
233
264
 
234
265
  /**
235
266
  * Returns file url.
@@ -371,6 +402,15 @@ class ImportMetaPlugin {
371
402
  `[${JSON.stringify(field)}]: ${importMetaUnknownProperty([
372
403
  field
373
404
  ])},`;
405
+ /**
406
+ * Import meta runtime property for build-time execution.
407
+ * @param {string} field field name
408
+ * @returns {string} generated property
409
+ */
410
+ const importMetaBuildTimeProperty = (field) =>
411
+ `[${JSON.stringify(field)}]: ${Template.toNormalComment(
412
+ `unsupported import.meta.${field}`
413
+ )} undefined,`;
374
414
 
375
415
  parser.hooks.typeof
376
416
  .for(IMPORT_META)
@@ -398,7 +438,6 @@ class ImportMetaPlugin {
398
438
  .tap(PLUGIN_NAME, (metaProperty) => {
399
439
  /** @type {RawRuntimeRequirements} */
400
440
  const runtimeRequirements = [];
401
- const moduleArgument = parser.state.module.moduleArgument;
402
441
 
403
442
  const referencedPropertiesInDestructuring =
404
443
  parser.destructuringAssignmentPropertiesFor(metaProperty);
@@ -412,9 +451,7 @@ class ImportMetaPlugin {
412
451
  knownProps.push(`webpack: ${importMetaWebpackVersion()}`);
413
452
  }
414
453
  if (isImportMetaFieldEnabled(importMeta, "main")) {
415
- knownProps.push(
416
- `main: ${RuntimeGlobals.moduleCache}[${RuntimeGlobals.entryModuleId}] === ${moduleArgument}`
417
- );
454
+ knownProps.push(`main: ${renderImportMetaMain(parser)}`);
418
455
  }
419
456
  if (isImportMetaFieldEnabled(importMeta, "env")) {
420
457
  addDefinitionValueDependencies();
@@ -431,11 +468,14 @@ class ImportMetaPlugin {
431
468
  )}`
432
469
  );
433
470
  }
471
+ const plainInitCode = `var ${varName} = {${knownProps.join(
472
+ ", "
473
+ )}};\n`;
434
474
  const initCode = preserveUnknown(importMeta)
435
475
  ? `var ${varName} = Object.assign(import.meta, {${knownProps.join(
436
476
  ", "
437
477
  )}});\n`
438
- : `var ${varName} = {${knownProps.join(", ")}};\n`;
478
+ : plainInitCode;
439
479
  /** @type {RawRuntimeRequirements} */
440
480
  const initRuntimeRequirements = [
441
481
  RuntimeGlobals.moduleCache,
@@ -450,7 +490,9 @@ class ImportMetaPlugin {
450
490
  const initDep = new ModuleInitFragmentDependency(
451
491
  initCode,
452
492
  initRuntimeRequirements,
453
- varName
493
+ varName,
494
+ // native `import.meta` does not parse in the build-time vm
495
+ initCode === plainInitCode ? undefined : plainInitCode
454
496
  );
455
497
  initDep.loc = parser.getLocation(metaProperty);
456
498
  parser.state.module.addPresentationalDependency(initDep);
@@ -465,6 +507,24 @@ class ImportMetaPlugin {
465
507
  }
466
508
 
467
509
  let str = "";
510
+ let strBuildTime = "";
511
+ /**
512
+ * Appends a property shared by both variants.
513
+ * @param {string} code generated property
514
+ */
515
+ const append = (code) => {
516
+ str += code;
517
+ strBuildTime += code;
518
+ };
519
+ /**
520
+ * Appends a property reading native `import.meta`, which
521
+ * does not parse in the build-time vm.
522
+ * @param {string} field field name
523
+ */
524
+ const appendRuntimeProperty = (field) => {
525
+ str += importMetaRuntimeProperty(field);
526
+ strBuildTime += importMetaBuildTimeProperty(field);
527
+ };
468
528
  for (const prop of referencedPropertiesInDestructuring) {
469
529
  const fieldEnabled = isImportMetaFieldEnabled(
470
530
  importMeta,
@@ -475,51 +535,59 @@ class ImportMetaPlugin {
475
535
  : undefined;
476
536
 
477
537
  if (value) {
478
- str += value;
538
+ append(value);
479
539
  continue;
480
540
  }
481
541
 
482
542
  switch (prop.id) {
483
543
  case "url":
484
- str += fieldEnabled
485
- ? `url: ${importMetaUrl()},`
486
- : importMetaRuntimeProperty(prop.id);
544
+ if (fieldEnabled) {
545
+ append(`url: ${importMetaUrl()},`);
546
+ } else {
547
+ appendRuntimeProperty(prop.id);
548
+ }
487
549
  break;
488
550
  case "webpack":
489
- str += fieldEnabled
490
- ? `webpack: ${importMetaWebpackVersion()},`
491
- : importMetaRuntimeProperty(prop.id);
551
+ if (fieldEnabled) {
552
+ append(`webpack: ${importMetaWebpackVersion()},`);
553
+ } else {
554
+ appendRuntimeProperty(prop.id);
555
+ }
492
556
  break;
493
557
  case "main":
494
558
  if (fieldEnabled) {
495
- str += `main: ${RuntimeGlobals.moduleCache}[${RuntimeGlobals.entryModuleId}] === ${moduleArgument},`;
559
+ append(`main: ${renderImportMetaMain(parser)},`);
496
560
  runtimeRequirements.push(
497
561
  RuntimeGlobals.moduleCache,
498
562
  RuntimeGlobals.entryModuleId,
499
563
  RuntimeGlobals.module
500
564
  );
501
565
  } else {
502
- str += importMetaRuntimeProperty(prop.id);
566
+ appendRuntimeProperty(prop.id);
503
567
  }
504
568
  break;
505
569
  case "env":
506
570
  if (fieldEnabled) {
507
571
  addDefinitionValueDependencies();
508
- str += `env: ${renderDefinition(envNode, IMPORT_META_ENV)},`;
572
+ append(
573
+ `env: ${renderDefinition(envNode, IMPORT_META_ENV)},`
574
+ );
509
575
  } else {
510
- str += importMetaRuntimeProperty(prop.id);
576
+ appendRuntimeProperty(prop.id);
511
577
  }
512
578
  break;
513
579
  default: {
514
580
  const node = customProps.get(prop.id);
515
581
  if (node !== undefined) {
516
582
  addDefinitionValueDependencies();
517
- str += `${DefinePlugin.toPropertyKey(prop.id)}: ${renderDefinition(
518
- node,
519
- `${IMPORT_META}.${prop.id}`
520
- )},`;
583
+ append(
584
+ `${DefinePlugin.toPropertyKey(prop.id)}: ${renderDefinition(
585
+ node,
586
+ `${IMPORT_META}.${prop.id}`
587
+ )},`
588
+ );
521
589
  } else {
522
- str += importMetaRuntimeProperty(prop.id);
590
+ appendRuntimeProperty(prop.id);
523
591
  }
524
592
  break;
525
593
  }
@@ -531,11 +599,19 @@ class ImportMetaPlugin {
531
599
  if (codeRequirements) {
532
600
  runtimeRequirements.push(...codeRequirements);
533
601
  }
534
- const dep = new ConstDependency(
535
- strCode,
536
- /** @type {Range} */ (metaProperty.range),
537
- runtimeRequirements
538
- );
602
+ const dep =
603
+ strBuildTime === str
604
+ ? new ConstDependency(
605
+ strCode,
606
+ /** @type {Range} */ (metaProperty.range),
607
+ runtimeRequirements
608
+ )
609
+ : new BuildTimeConstDependency(
610
+ strCode,
611
+ `({${strBuildTime}})`,
612
+ /** @type {Range} */ (metaProperty.range),
613
+ runtimeRequirements
614
+ );
539
615
  dep.loc = parser.getLocation(metaProperty);
540
616
  parser.state.module.addPresentationalDependency(dep);
541
617
  return true;
@@ -664,17 +740,12 @@ class ImportMetaPlugin {
664
740
  if (isImportMetaFieldEnabled(importMeta, "main")) {
665
741
  parser.hooks.expression
666
742
  .for(IMPORT_META_MAIN)
667
- .tap(
668
- PLUGIN_NAME,
669
- toConstantDependency(
670
- parser,
671
- `${RuntimeGlobals.moduleCache}[${RuntimeGlobals.entryModuleId}] === ${RuntimeGlobals.module}`,
672
- [
673
- RuntimeGlobals.moduleCache,
674
- RuntimeGlobals.entryModuleId,
675
- RuntimeGlobals.module
676
- ]
677
- )
743
+ .tap(PLUGIN_NAME, (expr) =>
744
+ toConstantDependency(parser, renderImportMetaMain(parser), [
745
+ RuntimeGlobals.moduleCache,
746
+ RuntimeGlobals.entryModuleId,
747
+ RuntimeGlobals.module
748
+ ])(expr)
678
749
  );
679
750
  parser.hooks.typeof
680
751
  .for(IMPORT_META_MAIN)
@@ -752,15 +823,6 @@ class ImportMetaPlugin {
752
823
  parser.hooks.unhandledExpressionMemberChain
753
824
  .for(IMPORT_META)
754
825
  .tap(PLUGIN_NAME, (expr, members) => {
755
- // unknown import.meta properties should be determined at runtime
756
- if (
757
- preserveUnknown(importMeta) ||
758
- (IMPORT_META_FIELDS.has(members[0]) &&
759
- !isImportMetaFieldEnabled(importMeta, members[0]))
760
- ) {
761
- return true;
762
- }
763
-
764
826
  // keep import.meta.env unknown property
765
827
  // don't evaluate import.meta.env.UNKNOWN_PROPERTY -> undefined.UNKNOWN_PROPERTY
766
828
  // `dirname` and `filename` logic in NodeStuffPlugin
@@ -771,6 +833,26 @@ class ImportMetaPlugin {
771
833
  ) {
772
834
  return true;
773
835
  }
836
+
837
+ // unknown import.meta properties should be determined at runtime
838
+ if (
839
+ preserveUnknown(importMeta) ||
840
+ (IMPORT_META_FIELDS.has(members[0]) &&
841
+ !isImportMetaFieldEnabled(importMeta, members[0]))
842
+ ) {
843
+ // keep the native access verbatim for emitted output, but
844
+ // native `import.meta` does not parse in the build-time vm
845
+ const dep = new BuildTimeConstDependency(
846
+ `${IMPORT_META}${propertyAccess(members, 0)}`,
847
+ `${Template.toNormalComment(
848
+ `unsupported import.meta.${members.join(".")}`
849
+ )} undefined${propertyAccess(members, 1)}`,
850
+ /** @type {Range} */ (expr.range)
851
+ );
852
+ dep.loc = parser.getLocation(expr);
853
+ parser.state.module.addPresentationalDependency(dep);
854
+ return true;
855
+ }
774
856
  const dep = new ConstDependency(
775
857
  importMetaUnknownProperty(members),
776
858
  /** @type {Range} */ (expr.range)
@@ -834,10 +916,11 @@ ImportMetaPlugin.getCompilationHooks = createHooksRegistry(
834
916
  })
835
917
  );
836
918
 
837
- module.exports = ImportMetaPlugin;
838
- module.exports.IMPORT_META_DIRNAME = IMPORT_META_DIRNAME;
839
- module.exports.IMPORT_META_FILENAME = IMPORT_META_FILENAME;
840
- module.exports.IMPORT_META_NAMES = IMPORT_META_NAMES;
841
- module.exports.IMPORT_META_STAGE_ESM_DETECTION =
919
+ ImportMetaPlugin.IMPORT_META_DIRNAME = IMPORT_META_DIRNAME;
920
+ ImportMetaPlugin.IMPORT_META_FILENAME = IMPORT_META_FILENAME;
921
+ ImportMetaPlugin.IMPORT_META_NAMES = IMPORT_META_NAMES;
922
+ ImportMetaPlugin.IMPORT_META_STAGE_ESM_DETECTION =
842
923
  IMPORT_META_STAGE_ESM_DETECTION;
843
- module.exports.isImportMetaFieldEnabled = isImportMetaFieldEnabled;
924
+ ImportMetaPlugin.isImportMetaFieldEnabled = isImportMetaFieldEnabled;
925
+
926
+ module.exports = ImportMetaPlugin;
@@ -10,10 +10,9 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
  const URLDependency = require("./URLDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency from "../Dependency" */
15
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
17
16
 
18
17
  // `import.meta.resolve(specifier)` is the string form of
19
18
  // `new URL(specifier, import.meta.url)`, so it reuses the URL asset pipeline
@@ -6,8 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
- const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
10
- const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
9
+
11
10
  const {
12
11
  VariableInfo,
13
12
  getImportAttributes
@@ -16,35 +15,50 @@ const memoize = require("../util/memoize");
16
15
  const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
17
16
  const ContextDependencyHelpers = require("./ContextDependencyHelpers");
18
17
  const { getNonOptionalPart } = require("./HarmonyImportDependency");
18
+ const HarmonyImportGuard = require("./HarmonyImportGuard");
19
19
  const ImportContextDependency = require("./ImportContextDependency");
20
20
  const ImportDependency = require("./ImportDependency");
21
21
  const ImportEagerDependency = require("./ImportEagerDependency");
22
22
  const { createGetImportPhase } = require("./ImportPhase");
23
23
  const ImportWeakDependency = require("./ImportWeakDependency");
24
24
 
25
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
26
- /** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
27
- /** @typedef {import("../ContextModule").ContextMode} ContextMode */
28
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
29
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
30
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
31
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
32
- /** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
33
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
34
- /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
35
- /** @typedef {import("../javascript/JavascriptParser").Members} Members */
36
- /** @typedef {import("../javascript/JavascriptParser").MembersOptionals} MembersOptionals */
37
- /** @typedef {import("../javascript/JavascriptParser").ArrowFunctionExpression} ArrowFunctionExpression */
38
- /** @typedef {import("../javascript/JavascriptParser").FunctionExpression} FunctionExpression */
39
- /** @typedef {import("../javascript/JavascriptParser").Identifier} Identifier */
40
- /** @typedef {import("../javascript/JavascriptParser").ObjectPattern} ObjectPattern */
41
- /** @typedef {import("../javascript/JavascriptParser").CallExpression} CallExpression */
25
+ const getUnsupportedFeatureWarning = memoize(() =>
26
+ require("../errors/UnsupportedFeatureWarning")
27
+ );
28
+
29
+ const getCommentCompilationWarning = memoize(() =>
30
+ require("../errors/CommentCompilationWarning")
31
+ );
32
+
33
+ /**
34
+ * @import {
35
+ * ArrowFunctionExpression,
36
+ * FunctionExpression,
37
+ * Identifier,
38
+ * ObjectPattern,
39
+ * CallExpression
40
+ * } from "estree"
41
+ */
42
+ /**
43
+ * @import {
44
+ * JavascriptParserOptions
45
+ * } from "../../declarations/WebpackOptions"
46
+ */
47
+ /** @import { RawChunkGroupOptions } from "../ChunkGroup" */
48
+ /** @import { ContextMode } from "../ContextModule" */
49
+ /** @import { RawReferencedExports } from "../Dependency" */
50
+ /** @import { BuildMeta } from "../Module" */
51
+ /**
52
+ * @import JavascriptParser, {
53
+ * ImportExpression,
54
+ * Range,
55
+ * JavascriptParserState
56
+ * } from "../javascript/JavascriptParser"
57
+ */
42
58
 
43
59
  /** @typedef {{ references: RawReferencedExports, expression: ImportExpression }} ImportSettings */
44
60
  /** @typedef {WeakMap<ImportExpression, RawReferencedExports>} State */
45
61
 
46
- const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
47
-
48
62
  /** @type {WeakMap<JavascriptParserState, State>} */
49
63
  const parserStateMap = new WeakMap();
50
64
  const dynamicImportTag = Symbol("import()");
@@ -357,7 +371,7 @@ class ImportParserPlugin {
357
371
  for (const e of commentErrors) {
358
372
  const { comment } = e;
359
373
  parser.state.module.addWarning(
360
- new CommentCompilationWarning(
374
+ new (getCommentCompilationWarning())(
361
375
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
362
376
  parser.getLocation(comment)
363
377
  )
@@ -374,7 +388,7 @@ class ImportParserPlugin {
374
388
  if (importOptions.webpackIgnore !== undefined) {
375
389
  if (typeof importOptions.webpackIgnore !== "boolean") {
376
390
  parser.state.module.addWarning(
377
- new UnsupportedFeatureWarning(
391
+ new (getUnsupportedFeatureWarning())(
378
392
  `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
379
393
  parser.getLocation(expr)
380
394
  )
@@ -387,7 +401,7 @@ class ImportParserPlugin {
387
401
  if (importOptions.webpackChunkName !== undefined) {
388
402
  if (typeof importOptions.webpackChunkName !== "string") {
389
403
  parser.state.module.addWarning(
390
- new UnsupportedFeatureWarning(
404
+ new (getUnsupportedFeatureWarning())(
391
405
  `\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
392
406
  parser.getLocation(expr)
393
407
  )
@@ -399,7 +413,7 @@ class ImportParserPlugin {
399
413
  if (importOptions.webpackMode !== undefined) {
400
414
  if (typeof importOptions.webpackMode !== "string") {
401
415
  parser.state.module.addWarning(
402
- new UnsupportedFeatureWarning(
416
+ new (getUnsupportedFeatureWarning())(
403
417
  `\`webpackMode\` expected a string, but received: ${importOptions.webpackMode}.`,
404
418
  parser.getLocation(expr)
405
419
  )
@@ -415,7 +429,7 @@ class ImportParserPlugin {
415
429
  groupOptions.prefetchOrder = importOptions.webpackPrefetch;
416
430
  } else {
417
431
  parser.state.module.addWarning(
418
- new UnsupportedFeatureWarning(
432
+ new (getUnsupportedFeatureWarning())(
419
433
  `\`webpackPrefetch\` expected true or a number, but received: ${importOptions.webpackPrefetch}.`,
420
434
  parser.getLocation(expr)
421
435
  )
@@ -429,7 +443,7 @@ class ImportParserPlugin {
429
443
  groupOptions.preloadOrder = importOptions.webpackPreload;
430
444
  } else {
431
445
  parser.state.module.addWarning(
432
- new UnsupportedFeatureWarning(
446
+ new (getUnsupportedFeatureWarning())(
433
447
  `\`webpackPreload\` expected true or a number, but received: ${importOptions.webpackPreload}.`,
434
448
  parser.getLocation(expr)
435
449
  )
@@ -446,7 +460,7 @@ class ImportParserPlugin {
446
460
  (importOptions.webpackFetchPriority);
447
461
  } else {
448
462
  parser.state.module.addWarning(
449
- new UnsupportedFeatureWarning(
463
+ new (getUnsupportedFeatureWarning())(
450
464
  `\`webpackFetchPriority\` expected true or "low", "high" or "auto", but received: ${importOptions.webpackFetchPriority}.`,
451
465
  parser.getLocation(expr)
452
466
  )
@@ -459,7 +473,7 @@ class ImportParserPlugin {
459
473
  !(importOptions.webpackInclude instanceof RegExp)
460
474
  ) {
461
475
  parser.state.module.addWarning(
462
- new UnsupportedFeatureWarning(
476
+ new (getUnsupportedFeatureWarning())(
463
477
  `\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
464
478
  parser.getLocation(expr)
465
479
  )
@@ -474,7 +488,7 @@ class ImportParserPlugin {
474
488
  !(importOptions.webpackExclude instanceof RegExp)
475
489
  ) {
476
490
  parser.state.module.addWarning(
477
- new UnsupportedFeatureWarning(
491
+ new (getUnsupportedFeatureWarning())(
478
492
  `\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
479
493
  parser.getLocation(expr)
480
494
  )
@@ -492,7 +506,7 @@ class ImportParserPlugin {
492
506
  ))
493
507
  )) {
494
508
  parser.state.module.addWarning(
495
- new UnsupportedFeatureWarning(
509
+ new (getUnsupportedFeatureWarning())(
496
510
  `\`webpackExports\` expected a string or an array of strings, but received: ${importOptions.webpackExports}.`,
497
511
  parser.getLocation(expr)
498
512
  )
@@ -511,7 +525,7 @@ class ImportParserPlugin {
511
525
  importOptions.webpackEntryOptions.worker !== undefined
512
526
  ) {
513
527
  parser.state.module.addWarning(
514
- new UnsupportedFeatureWarning(
528
+ new (getUnsupportedFeatureWarning())(
515
529
  "`worker` entry option is not supported in `import()`, it only applies to workers (e.g. `new Worker(new URL(...))`).",
516
530
  parser.getLocation(expr)
517
531
  )
@@ -526,7 +540,7 @@ class ImportParserPlugin {
526
540
  mode !== "weak"
527
541
  ) {
528
542
  parser.state.module.addWarning(
529
- new UnsupportedFeatureWarning(
543
+ new (getUnsupportedFeatureWarning())(
530
544
  `\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
531
545
  parser.getLocation(expr)
532
546
  )
@@ -547,7 +561,7 @@ class ImportParserPlugin {
547
561
  ) {
548
562
  if (exports) {
549
563
  parser.state.module.addWarning(
550
- new UnsupportedFeatureWarning(
564
+ new (getUnsupportedFeatureWarning())(
551
565
  "You don't need `webpackExports` if the usage of dynamic import is statically analyse-able. You can safely remove the `webpackExports` magic comment.",
552
566
  parser.getLocation(expr)
553
567
  )
@@ -629,7 +643,7 @@ class ImportParserPlugin {
629
643
  dep.optional = Boolean(parser.scope.inTry);
630
644
  depBlock.addDependency(dep);
631
645
  parser.state.current.addBlock(depBlock);
632
- getHarmonyImportGuard().attachDependencyGuards(parser, dep);
646
+ HarmonyImportGuard.attachDependencyGuards(parser, dep);
633
647
  }
634
648
  } else {
635
649
  if (mode === "weak") {
@@ -11,11 +11,18 @@ const getCommentCompilationWarning = memoize(() =>
11
11
  require("../errors/CommentCompilationWarning")
12
12
  );
13
13
 
14
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
15
- /** @typedef {import("../javascript/JavascriptParser").ExportAllDeclaration} ExportAllDeclaration */
16
- /** @typedef {import("../javascript/JavascriptParser").ExportNamedDeclaration} ExportNamedDeclaration */
17
- /** @typedef {import("../javascript/JavascriptParser").ImportDeclaration} ImportDeclaration */
18
- /** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
14
+ /**
15
+ * @import {
16
+ * ExportAllDeclaration,
17
+ * ExportNamedDeclaration,
18
+ * ImportDeclaration
19
+ * } from "estree"
20
+ */
21
+ /**
22
+ * @import JavascriptParser, {
23
+ * ImportExpression
24
+ * } from "../javascript/JavascriptParser"
25
+ */
19
26
 
20
27
  /** @typedef {typeof ImportPhase.Evaluation | typeof ImportPhase.Defer | typeof ImportPhase.Source} ImportPhaseType */
21
28
 
@@ -16,9 +16,13 @@ const ImportEagerDependency = require("./ImportEagerDependency");
16
16
  const ImportParserPlugin = require("./ImportParserPlugin");
17
17
  const ImportWeakDependency = require("./ImportWeakDependency");
18
18
 
19
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
20
- /** @typedef {import("../Compiler")} Compiler */
21
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
19
+ /**
20
+ * @import {
21
+ * JavascriptParserOptions
22
+ * } from "../../declarations/WebpackOptions"
23
+ */
24
+ /** @import Compiler from "../Compiler" */
25
+ /** @import Parser from "../javascript/JavascriptParser" */
22
26
 
23
27
  const PLUGIN_NAME = "ImportPlugin";
24
28
 
@@ -8,15 +8,12 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const ImportDependency = require("./ImportDependency");
10
10
 
11
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
- /** @typedef {import("../Module")} Module */
15
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
16
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
17
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
- /** @typedef {ImportDependency.RawReferencedExports} RawReferencedExports */
19
- /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
11
+ /** @import { ReplaceSource } from "webpack-sources" */
12
+ /** @import Dependency, { RawReferencedExports } from "../Dependency" */
13
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
14
+ /** @import Module, { BuildMeta } from "../Module" */
15
+ /** @import { ImportAttributes, Range } from "../javascript/JavascriptParser" */
16
+ /** @import { ImportPhaseType } from "./ImportPhase" */
20
17
 
21
18
  class ImportWeakDependency extends ImportDependency {
22
19
  /**