@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) 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 +46 -35
  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 +107 -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 +91 -26
  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 +111 -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 +40 -49
  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 +152 -103
  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 +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  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 +12 -6
  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 +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -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 +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  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 +5334 -0
  160. package/lib/css/syntax.js +9647 -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 +170 -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 +24 -11
  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 +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  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 +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -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 +49 -31
  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 +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  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 +73 -49
  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 +50 -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 +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -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()");
@@ -195,20 +209,18 @@ const isStaticStringAttributes = (node) => {
195
209
  : key.type === "Literal"
196
210
  ? key.value
197
211
  : undefined;
198
- if (keyName === "with" || keyName === "assert") {
199
- const value = prop.value;
200
- if (value.type !== "ObjectExpression") return false;
201
- for (const attr of value.properties) {
202
- if (attr.type !== "Property" || attr.kind !== "init" || attr.computed) {
203
- return false;
204
- }
205
- const attrValue = attr.value;
206
- if (
207
- attrValue.type !== "Literal" ||
208
- typeof attrValue.value !== "string"
209
- ) {
210
- return false;
211
- }
212
+ // Any other key is an expression webpack cannot account for, and its
213
+ // value still evaluates, so the argument has to stay.
214
+ if (keyName !== "with" && keyName !== "assert") return false;
215
+ const value = prop.value;
216
+ if (value.type !== "ObjectExpression") return false;
217
+ for (const attr of value.properties) {
218
+ if (attr.type !== "Property" || attr.kind !== "init" || attr.computed) {
219
+ return false;
220
+ }
221
+ const attrValue = attr.value;
222
+ if (attrValue.type !== "Literal" || typeof attrValue.value !== "string") {
223
+ return false;
212
224
  }
213
225
  }
214
226
  }
@@ -357,7 +369,7 @@ class ImportParserPlugin {
357
369
  for (const e of commentErrors) {
358
370
  const { comment } = e;
359
371
  parser.state.module.addWarning(
360
- new CommentCompilationWarning(
372
+ new (getCommentCompilationWarning())(
361
373
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
362
374
  parser.getLocation(comment)
363
375
  )
@@ -374,7 +386,7 @@ class ImportParserPlugin {
374
386
  if (importOptions.webpackIgnore !== undefined) {
375
387
  if (typeof importOptions.webpackIgnore !== "boolean") {
376
388
  parser.state.module.addWarning(
377
- new UnsupportedFeatureWarning(
389
+ new (getUnsupportedFeatureWarning())(
378
390
  `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
379
391
  parser.getLocation(expr)
380
392
  )
@@ -387,7 +399,7 @@ class ImportParserPlugin {
387
399
  if (importOptions.webpackChunkName !== undefined) {
388
400
  if (typeof importOptions.webpackChunkName !== "string") {
389
401
  parser.state.module.addWarning(
390
- new UnsupportedFeatureWarning(
402
+ new (getUnsupportedFeatureWarning())(
391
403
  `\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
392
404
  parser.getLocation(expr)
393
405
  )
@@ -399,7 +411,7 @@ class ImportParserPlugin {
399
411
  if (importOptions.webpackMode !== undefined) {
400
412
  if (typeof importOptions.webpackMode !== "string") {
401
413
  parser.state.module.addWarning(
402
- new UnsupportedFeatureWarning(
414
+ new (getUnsupportedFeatureWarning())(
403
415
  `\`webpackMode\` expected a string, but received: ${importOptions.webpackMode}.`,
404
416
  parser.getLocation(expr)
405
417
  )
@@ -415,7 +427,7 @@ class ImportParserPlugin {
415
427
  groupOptions.prefetchOrder = importOptions.webpackPrefetch;
416
428
  } else {
417
429
  parser.state.module.addWarning(
418
- new UnsupportedFeatureWarning(
430
+ new (getUnsupportedFeatureWarning())(
419
431
  `\`webpackPrefetch\` expected true or a number, but received: ${importOptions.webpackPrefetch}.`,
420
432
  parser.getLocation(expr)
421
433
  )
@@ -429,7 +441,7 @@ class ImportParserPlugin {
429
441
  groupOptions.preloadOrder = importOptions.webpackPreload;
430
442
  } else {
431
443
  parser.state.module.addWarning(
432
- new UnsupportedFeatureWarning(
444
+ new (getUnsupportedFeatureWarning())(
433
445
  `\`webpackPreload\` expected true or a number, but received: ${importOptions.webpackPreload}.`,
434
446
  parser.getLocation(expr)
435
447
  )
@@ -446,7 +458,7 @@ class ImportParserPlugin {
446
458
  (importOptions.webpackFetchPriority);
447
459
  } else {
448
460
  parser.state.module.addWarning(
449
- new UnsupportedFeatureWarning(
461
+ new (getUnsupportedFeatureWarning())(
450
462
  `\`webpackFetchPriority\` expected true or "low", "high" or "auto", but received: ${importOptions.webpackFetchPriority}.`,
451
463
  parser.getLocation(expr)
452
464
  )
@@ -459,7 +471,7 @@ class ImportParserPlugin {
459
471
  !(importOptions.webpackInclude instanceof RegExp)
460
472
  ) {
461
473
  parser.state.module.addWarning(
462
- new UnsupportedFeatureWarning(
474
+ new (getUnsupportedFeatureWarning())(
463
475
  `\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
464
476
  parser.getLocation(expr)
465
477
  )
@@ -474,7 +486,7 @@ class ImportParserPlugin {
474
486
  !(importOptions.webpackExclude instanceof RegExp)
475
487
  ) {
476
488
  parser.state.module.addWarning(
477
- new UnsupportedFeatureWarning(
489
+ new (getUnsupportedFeatureWarning())(
478
490
  `\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
479
491
  parser.getLocation(expr)
480
492
  )
@@ -492,7 +504,7 @@ class ImportParserPlugin {
492
504
  ))
493
505
  )) {
494
506
  parser.state.module.addWarning(
495
- new UnsupportedFeatureWarning(
507
+ new (getUnsupportedFeatureWarning())(
496
508
  `\`webpackExports\` expected a string or an array of strings, but received: ${importOptions.webpackExports}.`,
497
509
  parser.getLocation(expr)
498
510
  )
@@ -511,7 +523,7 @@ class ImportParserPlugin {
511
523
  importOptions.webpackEntryOptions.worker !== undefined
512
524
  ) {
513
525
  parser.state.module.addWarning(
514
- new UnsupportedFeatureWarning(
526
+ new (getUnsupportedFeatureWarning())(
515
527
  "`worker` entry option is not supported in `import()`, it only applies to workers (e.g. `new Worker(new URL(...))`).",
516
528
  parser.getLocation(expr)
517
529
  )
@@ -526,7 +538,7 @@ class ImportParserPlugin {
526
538
  mode !== "weak"
527
539
  ) {
528
540
  parser.state.module.addWarning(
529
- new UnsupportedFeatureWarning(
541
+ new (getUnsupportedFeatureWarning())(
530
542
  `\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
531
543
  parser.getLocation(expr)
532
544
  )
@@ -547,7 +559,7 @@ class ImportParserPlugin {
547
559
  ) {
548
560
  if (exports) {
549
561
  parser.state.module.addWarning(
550
- new UnsupportedFeatureWarning(
562
+ new (getUnsupportedFeatureWarning())(
551
563
  "You don't need `webpackExports` if the usage of dynamic import is statically analyse-able. You can safely remove the `webpackExports` magic comment.",
552
564
  parser.getLocation(expr)
553
565
  )
@@ -629,7 +641,7 @@ class ImportParserPlugin {
629
641
  dep.optional = Boolean(parser.scope.inTry);
630
642
  depBlock.addDependency(dep);
631
643
  parser.state.current.addBlock(depBlock);
632
- getHarmonyImportGuard().attachDependencyGuards(parser, dep);
644
+ HarmonyImportGuard.attachDependencyGuards(parser, dep);
633
645
  }
634
646
  } else {
635
647
  if (mode === "weak") {
@@ -662,6 +674,18 @@ class ImportParserPlugin {
662
674
  parser
663
675
  );
664
676
  if (!dep) return;
677
+ // The context module ignores the options argument, but the spec
678
+ // evaluates it, so anything but a static attributes object stays.
679
+ const optionsNode = expr.options;
680
+ if (
681
+ optionsNode &&
682
+ optionsNode.range &&
683
+ !isStaticStringAttributes(optionsNode)
684
+ ) {
685
+ /** @type {ImportContextDependency} */ (dep).optionsRange =
686
+ /** @type {Range} */ (optionsNode.range);
687
+ parser.walkExpression(optionsNode);
688
+ }
665
689
  dep.loc = parser.getLocation(expr);
666
690
  dep.optional = Boolean(parser.scope.inTry);
667
691
  parser.state.current.addDependency(dep);
@@ -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
  /**
@@ -8,15 +8,19 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const NullDependency = require("./NullDependency");
10
10
 
11
- /** @typedef {import("../Dependency").ExportSpec} ExportSpec */
12
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
13
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
14
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
- /** @typedef {import("../json/JsonData")} JsonData */
16
- /** @typedef {import("../json/JsonData").JsonValue} JsonValue */
11
+ /**
12
+ * @import {
13
+ * ExportSpec,
14
+ * ExportsSpec,
15
+ * UpdateHashContext
16
+ * } from "../Dependency"
17
+ */
18
+ /** @import ModuleGraph from "../ModuleGraph" */
19
+ /** @import JsonData from "../json/JsonData" */
17
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[JsonData, number]>} ObjectDeserializerContext */
18
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[JsonData, number]>} ObjectSerializerContext */
19
- /** @typedef {import("../util/Hash")} Hash */
22
+ /** @import { JsonValue } from "../util/fs" */
23
+ /** @import Hash from "../util/Hash" */
20
24
 
21
25
  /**
22
26
  * Defines the get exports from data fn callback.
@@ -7,8 +7,8 @@
7
7
 
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
11
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
10
+ /** @import { GetConditionFn } from "../Dependency" */
11
+ /** @import ModuleGraph from "../ModuleGraph" */
12
12
 
13
13
  class LoaderDependency extends ModuleDependency {
14
14
  /**
@@ -7,8 +7,8 @@
7
7
 
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
11
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
10
+ /** @import { GetConditionFn } from "../Dependency" */
11
+ /** @import ModuleGraph from "../ModuleGraph" */
12
12
 
13
13
  class LoaderImportDependency extends ModuleDependency {
14
14
  /**
@@ -11,13 +11,17 @@ const LazySet = require("../util/LazySet");
11
11
  const LoaderDependency = require("./LoaderDependency");
12
12
  const LoaderImportDependency = require("./LoaderImportDependency");
13
13
 
14
- /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
15
- /** @typedef {import("../Compilation").DependencyConstructor} DependencyConstructor */
16
- /** @typedef {import("../Compilation").ExecuteModuleExports} ExecuteModuleExports */
17
- /** @typedef {import("../Compilation").ExecuteModuleResult} ExecuteModuleResult */
18
- /** @typedef {import("../Compiler")} Compiler */
19
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
20
- /** @typedef {import("../Module").FileSystemDependencies} FileSystemDependencies */
14
+ /** @import { RawSourceMap } from "webpack-sources" */
15
+ /**
16
+ * @import {
17
+ * DependencyConstructor,
18
+ * ExecuteModuleExports,
19
+ * ExecuteModuleResult,
20
+ * FileSystemDependencies
21
+ * } from "../Compilation"
22
+ */
23
+ /** @import Compiler from "../Compiler" */
24
+ /** @import { BuildInfo } from "../Module" */
21
25
 
22
26
  /**
23
27
  * Defines the import module callback callback.
@@ -8,13 +8,13 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const NullDependency = require("./NullDependency");
10
10
 
11
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
11
+ /** @import { ReplaceSource } from "webpack-sources" */
12
+ /** @import Dependency from "../Dependency" */
13
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
14
+ /** @import { Range } from "../javascript/JavascriptParser" */
15
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[LocalModule, Range | undefined, boolean]>} ObjectDeserializerContext */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[LocalModule, Range | undefined, boolean]>} ObjectSerializerContext */
17
- /** @typedef {import("./LocalModule")} LocalModule */
17
+ /** @import LocalModule from "./LocalModule" */
18
18
 
19
19
  class LocalModuleDependency extends NullDependency {
20
20
  /**
@@ -7,7 +7,7 @@
7
7
 
8
8
  const LocalModule = require("./LocalModule");
9
9
 
10
- /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
10
+ /** @import { JavascriptParserState } from "../javascript/JavascriptParser" */
11
11
 
12
12
  /**
13
13
  * Returns resolved module.
@@ -11,15 +11,14 @@ const RuntimeGlobals = require("../RuntimeGlobals");
11
11
  const makeSerializable = require("../util/makeSerializable");
12
12
  const NullDependency = require("./NullDependency");
13
13
 
14
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
16
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
17
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
14
+ /** @import { ReplaceSource } from "webpack-sources" */
15
+ /** @import { ReferencedExports, UpdateHashContext } from "../Dependency" */
16
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
17
+ /** @import ModuleGraph from "../ModuleGraph" */
19
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, boolean]>} ObjectDeserializerContext */
20
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, boolean]>} ObjectSerializerContext */
21
- /** @typedef {import("../util/Hash")} Hash */
22
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
20
+ /** @import Hash from "../util/Hash" */
21
+ /** @import { RuntimeSpec } from "../util/runtime" */
23
22
 
24
23
  class ModuleDecoratorDependency extends NullDependency {
25
24
  /**
@@ -8,12 +8,15 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const DependencyTemplate = require("../DependencyTemplate");
10
10
 
11
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
12
- /** @typedef {import("../Module")} Module */
13
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
14
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @import { TRANSITIVE } from "../Dependency" */
12
+ /** @import Module from "../Module" */
13
+ /** @import { Range } from "../javascript/JavascriptParser" */
14
+ /**
15
+ * @import {
16
+ * ObjectDeserializerContext,
17
+ * ObjectSerializerContext
18
+ * } from "../serialization/ObjectMiddleware"
19
+ */
17
20
 
18
21
  class ModuleDependency extends Dependency {
19
22
  /**
@@ -7,10 +7,10 @@
7
7
 
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
11
- /** @typedef {import("../Dependency")} Dependency */
12
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
13
- /** @typedef {import("../Module")} Module */
10
+ /** @import { ReplaceSource } from "webpack-sources" */
11
+ /** @import Dependency from "../Dependency" */
12
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
13
+ /** @import Module from "../Module" */
14
14
 
15
15
  class ModuleDependencyTemplateAsId extends ModuleDependency.Template {
16
16
  /**
@@ -7,9 +7,9 @@
7
7
 
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
11
- /** @typedef {import("../Dependency")} Dependency */
12
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
10
+ /** @import { ReplaceSource } from "webpack-sources" */
11
+ /** @import Dependency from "../Dependency" */
12
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
13
13
 
14
14
  class ModuleDependencyTemplateAsRequireId extends ModuleDependency.Template {
15
15
  /**
@@ -9,7 +9,7 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
+ /** @import { Range } from "../javascript/JavascriptParser" */
13
13
 
14
14
  class ModuleHotAcceptDependency extends ModuleDependency {
15
15
  /**
@@ -9,7 +9,7 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
+ /** @import { Range } from "../javascript/JavascriptParser" */
13
13
 
14
14
  class ModuleHotDeclineDependency extends ModuleDependency {
15
15
  /**
@@ -9,11 +9,11 @@ const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string[], string | undefined]>} ObjectSerializerContext */
16
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string[], string | undefined]>} ObjectDeserializerContext */
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string[], string | undefined, string | undefined]>} ObjectSerializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string[], string | undefined, string | undefined]>} ObjectDeserializerContext */
17
17
  /**
18
18
  * A dependency that adds an init fragment to the module
19
19
  */
@@ -23,8 +23,9 @@ class ModuleInitFragmentDependency extends NullDependency {
23
23
  * @param {string} initCode the initialization code
24
24
  * @param {string[]} runtimeRequirements runtime requirements
25
25
  * @param {string=} key unique key to avoid emitting the same initialization code twice
26
+ * @param {string=} buildTimeInitCode initialization code for build-time execution, when `initCode` is only valid in emitted output
26
27
  */
27
- constructor(initCode, runtimeRequirements, key) {
28
+ constructor(initCode, runtimeRequirements, key, buildTimeInitCode) {
28
29
  super();
29
30
  /** @type {string} */
30
31
  this.initCode = initCode;
@@ -32,6 +33,8 @@ class ModuleInitFragmentDependency extends NullDependency {
32
33
  this.runtimeRequirements = runtimeRequirements;
33
34
  /** @type {string | undefined} */
34
35
  this.key = key;
36
+ /** @type {string | undefined} */
37
+ this.buildTimeInitCode = buildTimeInitCode;
35
38
  }
36
39
 
37
40
  /**
@@ -42,7 +45,8 @@ class ModuleInitFragmentDependency extends NullDependency {
42
45
  context
43
46
  .write(this.initCode)
44
47
  .write(this.runtimeRequirements)
45
- .write(this.key);
48
+ .write(this.key)
49
+ .write(this.buildTimeInitCode);
46
50
  super.serialize(context);
47
51
  }
48
52
 
@@ -56,7 +60,9 @@ class ModuleInitFragmentDependency extends NullDependency {
56
60
  this.runtimeRequirements = c1.read();
57
61
  const c2 = c1.rest;
58
62
  this.key = c2.read();
59
- super.deserialize(c2.rest);
63
+ const c3 = c2.rest;
64
+ this.buildTimeInitCode = c3.read();
65
+ super.deserialize(c3.rest);
60
66
  }
61
67
  }
62
68
 
@@ -75,14 +81,22 @@ ModuleInitFragmentDependency.Template = class ModuleInitFragmentDependencyTempla
75
81
  * @param {DependencyTemplateContext} templateContext the context object
76
82
  * @returns {void}
77
83
  */
78
- apply(dependency, source, { initFragments, runtimeRequirements }) {
84
+ apply(
85
+ dependency,
86
+ source,
87
+ { chunkGraph, initFragments, runtimeRequirements }
88
+ ) {
79
89
  const dep = /** @type {ModuleInitFragmentDependency} */ (dependency);
80
90
  for (const req of dep.runtimeRequirements) {
81
91
  runtimeRequirements.add(req);
82
92
  }
93
+ const initCode =
94
+ chunkGraph.buildTimeExecution && dep.buildTimeInitCode !== undefined
95
+ ? dep.buildTimeInitCode
96
+ : dep.initCode;
83
97
  initFragments.push(
84
98
  new InitFragment(
85
- dep.initCode,
99
+ initCode,
86
100
  InitFragment.STAGE_CONSTANTS,
87
101
  0,
88
102
  dep.key,
@@ -8,9 +8,9 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const DependencyTemplate = require("../DependencyTemplate");
10
10
 
11
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
13
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
11
+ /** @import { ReplaceSource } from "webpack-sources" */
12
+ /** @import { TRANSITIVE } from "../Dependency" */
13
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
14
14
 
15
15
  /** @typedef {string[]} RawRuntimeRequirements */
16
16