@depup/webpack 5.111.1-depup.2 → 5.112.0-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 (775) hide show
  1. package/README.md +4 -8
  2. package/changes.json +3 -19
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/context/ContextModule.js +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +48 -41
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -6,10 +6,9 @@
6
6
  "use strict";
7
7
 
8
8
  const { HookMap, SyncBailHook } = require("tapable");
9
- const NormalModule = require("../NormalModule");
10
- const Parser = require("../Parser");
11
9
  const WebpackError = require("../WebpackError");
12
- const StackedMap = require("../util/StackedMap");
10
+ const Parser = require("../module/Parser");
11
+ const binarySearchBounds = require("../util/binarySearchBounds");
13
12
  const {
14
13
  CompilerHintNotationRegExp,
15
14
  createMagicCommentContext,
@@ -17,7 +16,8 @@ const {
17
16
  parseCommentOptionsInRange
18
17
  } = require("../util/magicComment");
19
18
  const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
20
- const { nonASCIIwhitespace } = require("./parser");
19
+ const StackedMap = require("./StackedMap");
20
+ const { nonASCIIwhitespace } = require("./syntax-parser");
21
21
  const {
22
22
  BLOCK_DECLARATIONS,
23
23
  HOISTED_DECLARATIONS,
@@ -31,9 +31,9 @@ const {
31
31
  isIdentifierChar,
32
32
  overflowFrom,
33
33
  positionAt
34
- } = require("./syntax");
34
+ } = require("./syntax-parser");
35
35
 
36
- /** @import { EcmaVersion, ParserOptions, ParserPlugin } from "./syntax" */
36
+ /** @import { EcmaVersion, ParserOptions, ParserPlugin } from "./syntax-parser" */
37
37
  /**
38
38
  * @import {
39
39
  * AssignmentExpression,
@@ -108,38 +108,43 @@ const {
108
108
  * MaybeNamedClassDeclaration
109
109
  * } from "estree"
110
110
  */
111
- /** @import { DependencyLocation } from "../Dependency" */
111
+ /** @import { DependencyLocation } from "../graph/Dependency" */
112
+ /** @import { MagicCommentOptions } from "../util/magicComment" */
112
113
  /** @typedef {import("estree").Comment & { start: number, end: number, loc?: SourceLocation | null }} Comment */
113
114
  /**
114
115
  * Defines the shared type used by this module.
115
116
  * @template T
116
117
  * @typedef {import("tapable").AsArray<T>} AsArray<T>
117
118
  */
118
- /** @import { ParserState, PreparsedAst } from "../Parser" */
119
+ /** @import { ParserState, PreparsedAst } from "../module/Parser" */
119
120
 
120
- /** @import LocalModule from "../dependencies/LocalModule" */
121
+ /** @import LocalModule from "../dependencies/amd/LocalModule" */
121
122
  /**
122
123
  * @import {
123
- * HarmonyStarExportsList
124
- * } from "../dependencies/HarmonyExportImportedSpecifierDependency"
124
+ * ESMStarExportsList
125
+ * } from "../dependencies/esm/ESMExportImportedSpecifierDependency"
125
126
  */
126
127
 
127
128
  /**
128
129
  * Defines the known javascript parser state type used by this module.
130
+ * The `harmony*` properties forward to their `esm*` namesake.
129
131
  * @typedef {object} KnownJavascriptParserState
130
- * @property {Set<string>=} harmonyNamedExports
131
- * @property {InstanceType<HarmonyStarExportsList>=} harmonyStarExports
132
- * @property {number=} lastHarmonyImportOrder
132
+ * @property {Set<string>=} esmNamedExports
133
+ * @property {InstanceType<ESMStarExportsList>=} esmStarExports
134
+ * @property {number=} lastESMImportOrder
133
135
  * @property {LocalModule[]=} localModules
136
+ * @property {Set<string>=} harmonyNamedExports deprecated, use `esmNamedExports`
137
+ * @property {InstanceType<ESMStarExportsList>=} harmonyStarExports deprecated, use `esmStarExports`
138
+ * @property {number=} lastHarmonyImportOrder deprecated, use `lastESMImportOrder`
134
139
  */
135
140
 
136
141
  /** @typedef {ParserState & KnownJavascriptParserState} JavascriptParserState */
137
142
 
138
143
  /** @import Compilation from "../Compilation" */
139
- /** @import Module from "../Module" */
144
+ /** @import Module from "../module/Module" */
140
145
 
141
146
  /** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => Members, getMembersOptionals: () => MembersOptionals, getMemberRanges: () => MemberRanges }} GetInfoResult */
142
- /** @typedef {{ consequent?: EXPECTED_OBJECT, alternate?: EXPECTED_OBJECT }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
147
+ /** @typedef {{ consequent?: GuardFrame, alternate?: GuardFrame }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
143
148
  /** @typedef {Statement | ModuleDeclaration | Expression | MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration} StatementPathItem */
144
149
  /** @typedef {(ident: string) => void} OnIdentString */
145
150
  /** @typedef {(ident: string, identifier: Identifier) => void} OnIdent */
@@ -273,7 +278,10 @@ const getImportAttributes = (node) => {
273
278
  result[key] = /** @type {string} */ (attribute.value.value);
274
279
  }
275
280
 
276
- if (/** @type {EXPECTED_ANY} */ (node.attributes)[LEGACY_ASSERT_ATTRIBUTES]) {
281
+ if (
282
+ /** @type {typeof node.attributes & { [LEGACY_ASSERT_ATTRIBUTES]?: boolean }} */
283
+ (node.attributes)[LEGACY_ASSERT_ATTRIBUTES]
284
+ ) {
277
285
  result._isLegacyAssert = true;
278
286
  }
279
287
 
@@ -365,19 +373,20 @@ class VariableInfo {
365
373
 
366
374
  /**
367
375
  * @import {
368
- * HarmonySettings
369
- * } from "../dependencies/HarmonyImportDependencyParserPlugin"
376
+ * ESMSettings
377
+ * } from "../dependencies/esm/ESMImportDependencyParserPlugin"
370
378
  */
371
- /** @import { ImportSettings } from "../dependencies/ImportParserPlugin" */
379
+ /** @import { ImportSettings } from "../dependencies/import/ImportParserPlugin" */
380
+ /** @import { GuardFrame } from "../dependencies/esm/ESMImportGuard" */
372
381
  /**
373
382
  * @import {
374
383
  * CommonJsImportSettings
375
- * } from "../dependencies/CommonJsImportsParserPlugin"
384
+ * } from "../dependencies/commonjs/CommonJsImportsParserPlugin"
376
385
  */
377
- /** @import { CompatibilitySettings } from "../CompatibilityPlugin" */
386
+ /** @import { CompatibilitySettings } from "./CompatibilityPlugin" */
378
387
  /** @import { TopLevelSymbol } from "../optimize/InnerGraph" */
379
388
 
380
- /** @typedef {HarmonySettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
389
+ /** @typedef {ESMSettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
381
390
  /** @typedef {KnownTagData | Record<string, EXPECTED_ANY>} TagData */
382
391
 
383
392
  /**
@@ -554,123 +563,138 @@ const valueAsExpression = (value, expr, sideEffects) => {
554
563
  };
555
564
 
556
565
  // The constant operators, shared so evaluating `a - b` allocates no handler.
566
+ // JavaScript coerces any operand; each cast only lets TypeScript type the operator.
567
+
568
+ /** @typedef {ReturnType<BasicEvaluatedExpression["asCompileTimeValue"]>} CompileTimeValue */
557
569
 
558
570
  /**
559
- * @param {EXPECTED_ANY} l left operand
560
- * @param {EXPECTED_ANY} r right operand
561
- * @returns {EXPECTED_ANY} the result
571
+ * @param {CompileTimeValue} l left operand
572
+ * @param {CompileTimeValue} r right operand
573
+ * @returns {number | bigint} the result
562
574
  */
563
- const SUBTRACT = (l, r) => l - r;
575
+ const SUBTRACT = (l, r) =>
576
+ /** @type {number} */ (l) - /** @type {number} */ (r);
564
577
 
565
578
  /**
566
- * @param {EXPECTED_ANY} l left operand
567
- * @param {EXPECTED_ANY} r right operand
568
- * @returns {EXPECTED_ANY} the result
579
+ * @param {CompileTimeValue} l left operand
580
+ * @param {CompileTimeValue} r right operand
581
+ * @returns {number | bigint} the result
569
582
  */
570
- const MULTIPLY = (l, r) => l * r;
583
+ const MULTIPLY = (l, r) =>
584
+ /** @type {number} */ (l) * /** @type {number} */ (r);
571
585
 
572
586
  /**
573
- * @param {EXPECTED_ANY} l left operand
574
- * @param {EXPECTED_ANY} r right operand
575
- * @returns {EXPECTED_ANY} the result
587
+ * @param {CompileTimeValue} l left operand
588
+ * @param {CompileTimeValue} r right operand
589
+ * @returns {number | bigint} the result
576
590
  */
577
- const DIVIDE = (l, r) => l / r;
591
+ const DIVIDE = (l, r) => /** @type {number} */ (l) / /** @type {number} */ (r);
578
592
 
579
593
  /**
580
- * @param {EXPECTED_ANY} l left operand
581
- * @param {EXPECTED_ANY} r right operand
582
- * @returns {EXPECTED_ANY} the result
594
+ * @param {CompileTimeValue} l left operand
595
+ * @param {CompileTimeValue} r right operand
596
+ * @returns {number | bigint} the result
583
597
  */
584
- const POWER = (l, r) => l ** r;
598
+ const POWER = (l, r) => /** @type {number} */ (l) ** /** @type {number} */ (r);
585
599
 
586
600
  /**
587
- * @param {EXPECTED_ANY} l left operand
588
- * @param {EXPECTED_ANY} r right operand
589
- * @returns {EXPECTED_ANY} the result
601
+ * @param {CompileTimeValue} l left operand
602
+ * @param {CompileTimeValue} r right operand
603
+ * @returns {number | bigint} the result
590
604
  */
591
- const BITWISE_AND = (l, r) => l & r;
605
+ const BITWISE_AND = (l, r) =>
606
+ /** @type {number} */ (l) & /** @type {number} */ (r);
592
607
 
593
608
  /**
594
- * @param {EXPECTED_ANY} l left operand
595
- * @param {EXPECTED_ANY} r right operand
596
- * @returns {EXPECTED_ANY} the result
609
+ * @param {CompileTimeValue} l left operand
610
+ * @param {CompileTimeValue} r right operand
611
+ * @returns {number | bigint} the result
597
612
  */
598
- const BITWISE_OR = (l, r) => l | r;
613
+ const BITWISE_OR = (l, r) =>
614
+ /** @type {number} */ (l) | /** @type {number} */ (r);
599
615
 
600
616
  /**
601
- * @param {EXPECTED_ANY} l left operand
602
- * @param {EXPECTED_ANY} r right operand
603
- * @returns {EXPECTED_ANY} the result
617
+ * @param {CompileTimeValue} l left operand
618
+ * @param {CompileTimeValue} r right operand
619
+ * @returns {number | bigint} the result
604
620
  */
605
- const BITWISE_XOR = (l, r) => l ^ r;
621
+ const BITWISE_XOR = (l, r) =>
622
+ /** @type {number} */ (l) ^ /** @type {number} */ (r);
606
623
 
607
624
  /**
608
- * @param {EXPECTED_ANY} l left operand
609
- * @param {EXPECTED_ANY} r right operand
610
- * @returns {EXPECTED_ANY} the result
625
+ * @param {CompileTimeValue} l left operand
626
+ * @param {CompileTimeValue} r right operand
627
+ * @returns {number} the result
611
628
  */
612
- const UNSIGNED_SHIFT_RIGHT = (l, r) => l >>> r;
629
+ const UNSIGNED_SHIFT_RIGHT = (l, r) =>
630
+ /** @type {number} */ (l) >>> /** @type {number} */ (r);
613
631
 
614
632
  /**
615
- * @param {EXPECTED_ANY} l left operand
616
- * @param {EXPECTED_ANY} r right operand
617
- * @returns {EXPECTED_ANY} the result
633
+ * @param {CompileTimeValue} l left operand
634
+ * @param {CompileTimeValue} r right operand
635
+ * @returns {number | bigint} the result
618
636
  */
619
- const SHIFT_RIGHT = (l, r) => l >> r;
637
+ const SHIFT_RIGHT = (l, r) =>
638
+ /** @type {number} */ (l) >> /** @type {number} */ (r);
620
639
 
621
640
  /**
622
- * @param {EXPECTED_ANY} l left operand
623
- * @param {EXPECTED_ANY} r right operand
624
- * @returns {EXPECTED_ANY} the result
641
+ * @param {CompileTimeValue} l left operand
642
+ * @param {CompileTimeValue} r right operand
643
+ * @returns {number | bigint} the result
625
644
  */
626
- const SHIFT_LEFT = (l, r) => l << r;
645
+ const SHIFT_LEFT = (l, r) =>
646
+ /** @type {number} */ (l) << /** @type {number} */ (r);
627
647
 
628
648
  /**
629
- * @param {EXPECTED_ANY} l left operand
630
- * @param {EXPECTED_ANY} r right operand
631
- * @returns {EXPECTED_ANY} the result
649
+ * @param {CompileTimeValue} l left operand
650
+ * @param {CompileTimeValue} r right operand
651
+ * @returns {boolean} the result
632
652
  */
633
- const LESS_THAN = (l, r) => l < r;
653
+ const LESS_THAN = (l, r) =>
654
+ /** @type {number} */ (l) < /** @type {number} */ (r);
634
655
 
635
656
  /**
636
- * @param {EXPECTED_ANY} l left operand
637
- * @param {EXPECTED_ANY} r right operand
638
- * @returns {EXPECTED_ANY} the result
657
+ * @param {CompileTimeValue} l left operand
658
+ * @param {CompileTimeValue} r right operand
659
+ * @returns {boolean} the result
639
660
  */
640
- const GREATER_THAN = (l, r) => l > r;
661
+ const GREATER_THAN = (l, r) =>
662
+ /** @type {number} */ (l) > /** @type {number} */ (r);
641
663
 
642
664
  /**
643
- * @param {EXPECTED_ANY} l left operand
644
- * @param {EXPECTED_ANY} r right operand
645
- * @returns {EXPECTED_ANY} the result
665
+ * @param {CompileTimeValue} l left operand
666
+ * @param {CompileTimeValue} r right operand
667
+ * @returns {boolean} the result
646
668
  */
647
- const LESS_THAN_OR_EQUAL = (l, r) => l <= r;
669
+ const LESS_THAN_OR_EQUAL = (l, r) =>
670
+ /** @type {number} */ (l) <= /** @type {number} */ (r);
648
671
 
649
672
  /**
650
- * @param {EXPECTED_ANY} l left operand
651
- * @param {EXPECTED_ANY} r right operand
652
- * @returns {EXPECTED_ANY} the result
673
+ * @param {CompileTimeValue} l left operand
674
+ * @param {CompileTimeValue} r right operand
675
+ * @returns {boolean} the result
653
676
  */
654
- const GREATER_THAN_OR_EQUAL = (l, r) => l >= r;
677
+ const GREATER_THAN_OR_EQUAL = (l, r) =>
678
+ /** @type {number} */ (l) >= /** @type {number} */ (r);
655
679
 
656
680
  /**
657
- * @param {EXPECTED_ANY} v operand
658
- * @returns {EXPECTED_ANY} the result
681
+ * @param {CompileTimeValue} v operand
682
+ * @returns {number | bigint} the result
659
683
  */
660
- const BITWISE_NOT = (v) => ~v;
684
+ const BITWISE_NOT = (v) => ~(/** @type {number} */ (v));
661
685
 
662
686
  /**
663
- * @param {EXPECTED_ANY} v operand
664
- * @returns {EXPECTED_ANY} the result
687
+ * @param {CompileTimeValue} v operand
688
+ * @returns {number} the result
665
689
  */
666
690
  // eslint-disable-next-line no-implicit-coercion
667
- const TO_NUMBER = (v) => +v;
691
+ const TO_NUMBER = (v) => +(/** @type {number} */ (v));
668
692
 
669
693
  /**
670
- * @param {EXPECTED_ANY} v operand
671
- * @returns {EXPECTED_ANY} the result
694
+ * @param {CompileTimeValue} v operand
695
+ * @returns {number | bigint} the result
672
696
  */
673
- const NEGATE = (v) => -v;
697
+ const NEGATE = (v) => -(/** @type {number} */ (v));
674
698
 
675
699
  /**
676
700
  * Evaluates a binary expression if and only if it is a const operation (e.g. 1 + 2, "a" + "b", etc.).
@@ -1061,7 +1085,9 @@ const collectHoistedDeclaration = (statement, hoisted) => {
1061
1085
  */
1062
1086
  const moduleDeclarationsOf = (ast, trusted) => {
1063
1087
  if (trusted) {
1064
- const recorded = /** @type {EXPECTED_ANY} */ (ast)[MODULE_DECLARATIONS];
1088
+ const recorded =
1089
+ /** @type {Program & { [MODULE_DECLARATIONS]?: ModuleDeclarations }} */
1090
+ (ast)[MODULE_DECLARATIONS];
1065
1091
  if (recorded !== undefined) return recorded;
1066
1092
  }
1067
1093
  /** @type {ModuleDeclarations} */
@@ -1086,7 +1112,9 @@ const moduleDeclarationsOf = (ast, trusted) => {
1086
1112
  */
1087
1113
  const hoistedDeclarationsOf = (node, trusted) => {
1088
1114
  if (trusted) {
1089
- const recorded = /** @type {EXPECTED_ANY} */ (node)[HOISTED_DECLARATIONS];
1115
+ const recorded =
1116
+ /** @type {(Program | BlockStatement) & { [HOISTED_DECLARATIONS]?: HoistedDeclarations }} */
1117
+ (node)[HOISTED_DECLARATIONS];
1090
1118
  if (recorded !== undefined) return recorded;
1091
1119
  }
1092
1120
  return collectHoistedDeclarations(node.body, EMPTY_HOISTED_DECLARATIONS);
@@ -1112,6 +1140,14 @@ const collectBlockDeclarations = (statements) => {
1112
1140
  return overflow === undefined ? mask : overflow;
1113
1141
  };
1114
1142
 
1143
+ /**
1144
+ * @param {Comment} comment comment to compare
1145
+ * @param {number} position source offset
1146
+ * @returns {number} comparison of the comment end with the offset
1147
+ */
1148
+ const compareCommentEnd = (comment, position) =>
1149
+ /** @type {Range} */ (comment.range)[1] - position;
1150
+
1115
1151
  /**
1116
1152
  * Whether the source between two offsets is whitespace only.
1117
1153
  * @param {string} source the module source
@@ -1202,13 +1238,13 @@ class JavascriptParser extends Parser {
1202
1238
  * Every statement the hoisting pass reads, which a tap on this turns
1203
1239
  * back into a walk of them all. Tap `preStatementByType` instead.
1204
1240
  * @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
1205
- * @deprecated TODO webpack 6: remove, with the statement walk it turns on
1241
+ * @deprecated TODO in the next major release: remove, with the statement walk it turns on
1206
1242
  */
1207
1243
  preStatement: new SyncBailHook(["statement"]),
1208
1244
  /**
1209
1245
  * Each declaration the parser records: a variable, function or class
1210
1246
  * one. Any other type turns the pass back into a walk of every
1211
- * statement, and goes away with that walk in webpack 6.
1247
+ * statement, and goes away with that walk in the next major release.
1212
1248
  * @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
1213
1249
  * @since 5.109.0
1214
1250
  */
@@ -1218,13 +1254,13 @@ class JavascriptParser extends Parser {
1218
1254
  * Every statement the block pass reads, which a tap on this turns back
1219
1255
  * into a walk of them all. Tap `blockPreStatementByType` instead.
1220
1256
  * @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
1221
- * @deprecated TODO webpack 6: remove, with the statement walk it turns on
1257
+ * @deprecated TODO in the next major release: remove, with the statement walk it turns on
1222
1258
  */
1223
1259
  blockPreStatement: new SyncBailHook(["declaration"]),
1224
1260
  /**
1225
1261
  * Each statement the parser records for the block pass: a variable, class
1226
1262
  * or export declaration. Any other type turns the pass back into a walk
1227
- * of every statement, and goes away with that walk in webpack 6.
1263
+ * of every statement, and goes away with that walk in the next major release.
1228
1264
  * @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
1229
1265
  * @since 5.109.0
1230
1266
  */
@@ -2102,7 +2138,7 @@ class JavascriptParser extends Parser {
2102
2138
  const info = this.getVariableInfo(/** @type {Identifier} */ (expr).name);
2103
2139
  if (
2104
2140
  typeof info === "string" ||
2105
- (info instanceof VariableInfo &&
2141
+ (JavascriptParser.isVariableInfo(info) &&
2106
2142
  (info.isFree() ||
2107
2143
  info.isTagged() ||
2108
2144
  // Walk `tagInfo` in `callHooksForInfo` if tagInfo is present.
@@ -2121,7 +2157,8 @@ class JavascriptParser extends Parser {
2121
2157
  const info = this.getVariableInfo("this");
2122
2158
  if (
2123
2159
  typeof info === "string" ||
2124
- (info instanceof VariableInfo && (info.isFree() || info.isTagged()))
2160
+ (JavascriptParser.isVariableInfo(info) &&
2161
+ (info.isFree() || info.isTagged()))
2125
2162
  ) {
2126
2163
  return {
2127
2164
  name: info,
@@ -2715,7 +2752,7 @@ class JavascriptParser extends Parser {
2715
2752
  * Walk every statement of a scope to declare what hoists to it. Only a tap
2716
2753
  * on the deprecated `preStatement` hook asks for this.
2717
2754
  * @param {(Statement | ModuleDeclaration)[]} statements statements
2718
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2755
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2719
2756
  */
2720
2757
  preWalkStatements(statements) {
2721
2758
  for (let index = 0, len = statements.length; index < len; index++) {
@@ -2726,7 +2763,7 @@ class JavascriptParser extends Parser {
2726
2763
  /**
2727
2764
  * Pre walk block statement.
2728
2765
  * @param {BlockStatement} statement block statement
2729
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2766
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2730
2767
  */
2731
2768
  preWalkBlockStatement(statement) {
2732
2769
  this.preWalkStatements(statement.body);
@@ -2735,7 +2772,7 @@ class JavascriptParser extends Parser {
2735
2772
  /**
2736
2773
  * Pre walk if statement.
2737
2774
  * @param {IfStatement} statement if statement
2738
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2775
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2739
2776
  */
2740
2777
  preWalkIfStatement(statement) {
2741
2778
  this.preWalkStatement(statement.consequent);
@@ -2747,7 +2784,7 @@ class JavascriptParser extends Parser {
2747
2784
  /**
2748
2785
  * Pre walk labeled statement.
2749
2786
  * @param {LabeledStatement} statement labeled statement
2750
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2787
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2751
2788
  */
2752
2789
  preWalkLabeledStatement(statement) {
2753
2790
  this.preWalkStatement(statement.body);
@@ -2756,7 +2793,7 @@ class JavascriptParser extends Parser {
2756
2793
  /**
2757
2794
  * Pre walk with statement.
2758
2795
  * @param {WithStatement} statement with statement
2759
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2796
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2760
2797
  */
2761
2798
  preWalkWithStatement(statement) {
2762
2799
  this.preWalkStatement(statement.body);
@@ -2765,7 +2802,7 @@ class JavascriptParser extends Parser {
2765
2802
  /**
2766
2803
  * Pre walk switch statement.
2767
2804
  * @param {SwitchStatement} statement switch statement
2768
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2805
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2769
2806
  */
2770
2807
  preWalkSwitchStatement(statement) {
2771
2808
  this.preWalkSwitchCases(statement.cases);
@@ -2774,7 +2811,7 @@ class JavascriptParser extends Parser {
2774
2811
  /**
2775
2812
  * Pre walk switch cases.
2776
2813
  * @param {SwitchCase[]} switchCases switch cases
2777
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2814
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2778
2815
  */
2779
2816
  preWalkSwitchCases(switchCases) {
2780
2817
  for (let index = 0, len = switchCases.length; index < len; index++) {
@@ -2785,7 +2822,7 @@ class JavascriptParser extends Parser {
2785
2822
  /**
2786
2823
  * Pre walk try statement.
2787
2824
  * @param {TryStatement} statement try statement
2788
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2825
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2789
2826
  */
2790
2827
  preWalkTryStatement(statement) {
2791
2828
  this.preWalkStatement(statement.block);
@@ -2796,7 +2833,7 @@ class JavascriptParser extends Parser {
2796
2833
  /**
2797
2834
  * Pre walk catch clause.
2798
2835
  * @param {CatchClause} catchClause catch clause
2799
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2836
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2800
2837
  */
2801
2838
  preWalkCatchClause(catchClause) {
2802
2839
  this.preWalkStatement(catchClause.body);
@@ -2805,7 +2842,7 @@ class JavascriptParser extends Parser {
2805
2842
  /**
2806
2843
  * Pre walk while statement.
2807
2844
  * @param {WhileStatement} statement while statement
2808
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2845
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2809
2846
  */
2810
2847
  preWalkWhileStatement(statement) {
2811
2848
  this.preWalkStatement(statement.body);
@@ -2814,7 +2851,7 @@ class JavascriptParser extends Parser {
2814
2851
  /**
2815
2852
  * Pre walk do while statement.
2816
2853
  * @param {DoWhileStatement} statement do while statement
2817
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2854
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2818
2855
  */
2819
2856
  preWalkDoWhileStatement(statement) {
2820
2857
  this.preWalkStatement(statement.body);
@@ -2823,7 +2860,7 @@ class JavascriptParser extends Parser {
2823
2860
  /**
2824
2861
  * Pre walk for statement.
2825
2862
  * @param {ForStatement} statement for statement
2826
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2863
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2827
2864
  */
2828
2865
  preWalkForStatement(statement) {
2829
2866
  if (statement.init && statement.init.type === "VariableDeclaration") {
@@ -2835,7 +2872,7 @@ class JavascriptParser extends Parser {
2835
2872
  /**
2836
2873
  * Pre walk for in statement.
2837
2874
  * @param {ForInStatement} statement for in statement
2838
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2875
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2839
2876
  */
2840
2877
  preWalkForInStatement(statement) {
2841
2878
  if (statement.left.type === "VariableDeclaration") {
@@ -2847,7 +2884,7 @@ class JavascriptParser extends Parser {
2847
2884
  /**
2848
2885
  * Pre walk for of statement. `for await` is reported by the walk, not here.
2849
2886
  * @param {ForOfStatement} statement for of statement
2850
- * @deprecated TODO webpack 6: remove, with the `preStatement` hook
2887
+ * @deprecated TODO in the next major release: remove, with the `preStatement` hook
2851
2888
  */
2852
2889
  preWalkForOfStatement(statement) {
2853
2890
  if (statement.left.type === "VariableDeclaration") {
@@ -2859,7 +2896,7 @@ class JavascriptParser extends Parser {
2859
2896
  /**
2860
2897
  * Scan every top-level statement for the program's module declarations.
2861
2898
  * The parser records them now, so nothing inside webpack scans for them.
2862
- * @deprecated TODO webpack 6: remove
2899
+ * @deprecated TODO in the next major release: remove
2863
2900
  * @param {(Statement | ModuleDeclaration)[]} statements statements
2864
2901
  */
2865
2902
  modulePreWalkStatements(statements) {
@@ -2883,7 +2920,7 @@ class JavascriptParser extends Parser {
2883
2920
  * Walk every statement of a list to declare what it binds. Only a tap on the
2884
2921
  * deprecated `blockPreStatement` hook asks for this.
2885
2922
  * @param {(Statement | ModuleDeclaration)[]} statements statements
2886
- * @deprecated TODO webpack 6: remove, with the `blockPreStatement` hook
2923
+ * @deprecated TODO in the next major release: remove, with the `blockPreStatement` hook
2887
2924
  */
2888
2925
  blockPreWalkStatements(statements) {
2889
2926
  for (let index = 0, len = statements.length; index < len; index++) {
@@ -2912,7 +2949,9 @@ class JavascriptParser extends Parser {
2912
2949
  /** @type {BlockDeclarations | undefined} */
2913
2950
  let recorded;
2914
2951
  if (this._hasParserRecord) {
2915
- recorded = /** @type {EXPECTED_ANY} */ (node)[BLOCK_DECLARATIONS];
2952
+ recorded =
2953
+ /** @type {typeof node & { [BLOCK_DECLARATIONS]?: BlockDeclarations }} */
2954
+ (node)[BLOCK_DECLARATIONS];
2916
2955
  // 72.8% of the lists a build reads declare nothing, and saying so is
2917
2956
  // the whole pass for them
2918
2957
  if (recorded === 0) return;
@@ -3217,7 +3256,7 @@ class JavascriptParser extends Parser {
3217
3256
  /**
3218
3257
  * Walks a conditional branch with its guard frame (if any) pushed onto the
3219
3258
  * parser-state guard stack for the duration of the branch body.
3220
- * @param {EXPECTED_OBJECT | undefined | null} frame guard frame, or falsy when the branch is unguarded
3259
+ * @param {GuardFrame | undefined | null} frame guard frame, or falsy when the branch is unguarded
3221
3260
  * @param {() => void} walk branch walk
3222
3261
  * @returns {void}
3223
3262
  */
@@ -5600,7 +5639,7 @@ class JavascriptParser extends Parser {
5600
5639
  if (typeof info === "string") {
5601
5640
  name = info;
5602
5641
  } else {
5603
- if (!(info instanceof VariableInfo)) {
5642
+ if (!JavascriptParser.isVariableInfo(info)) {
5604
5643
  if (defined !== undefined) {
5605
5644
  return defined();
5606
5645
  }
@@ -5646,7 +5685,7 @@ class JavascriptParser extends Parser {
5646
5685
  */
5647
5686
  _hasHooksForInfo(hookMap, info) {
5648
5687
  if (typeof info === "string") return hookMap.get(info) !== undefined;
5649
- if (!(info instanceof VariableInfo)) return false;
5688
+ if (!JavascriptParser.isVariableInfo(info)) return false;
5650
5689
  let tagInfo = info.tagInfo;
5651
5690
  while (tagInfo !== undefined) {
5652
5691
  if (hookMap.get(tagInfo.tag) !== undefined) return true;
@@ -5710,7 +5749,7 @@ class JavascriptParser extends Parser {
5710
5749
  if (typeof info === "string") {
5711
5750
  name = info;
5712
5751
  } else {
5713
- if (!(info instanceof VariableInfo)) {
5752
+ if (!JavascriptParser.isVariableInfo(info)) {
5714
5753
  return;
5715
5754
  }
5716
5755
  let tagInfo = info.tagInfo;
@@ -5887,6 +5926,37 @@ class JavascriptParser extends Parser {
5887
5926
  return oldScope;
5888
5927
  }
5889
5928
 
5929
+ /**
5930
+ * The directive a statement spells, or `undefined` when it is not one. An
5931
+ * AST webpack did not parse may leave the metadata off a directive, so the
5932
+ * spelling is recovered from the literal itself there.
5933
+ * @param {Directive | Statement | ModuleDeclaration} statement statement
5934
+ * @returns {string | undefined} the spelling between the quotes
5935
+ */
5936
+ getDirective(statement) {
5937
+ if (statement.type !== "ExpressionStatement") return undefined;
5938
+ const directive = /** @type {Directive} */ (statement).directive;
5939
+ if (directive !== undefined || this._hasParserRecord) return directive;
5940
+ const expression = statement.expression;
5941
+ if (expression.type !== "Literal" || typeof expression.value !== "string") {
5942
+ return undefined;
5943
+ }
5944
+ // a parenthesized string is an expression rather than a directive, and
5945
+ // only the statement says so — the literal starts inside the parentheses
5946
+ if (
5947
+ statement.range !== undefined &&
5948
+ expression.range !== undefined &&
5949
+ statement.range[0] !== expression.range[0]
5950
+ ) {
5951
+ return undefined;
5952
+ }
5953
+ // the raw text keeps an escape unexpanded, which is what separates a
5954
+ // directive from a string that merely reads like one
5955
+ return expression.raw === undefined
5956
+ ? expression.value
5957
+ : expression.raw.slice(1, -1);
5958
+ }
5959
+
5890
5960
  /**
5891
5961
  * Processes the provided statement.
5892
5962
  * @param {(Directive | Statement | ModuleDeclaration)[]} statements statements
@@ -5901,11 +5971,17 @@ class JavascriptParser extends Parser {
5901
5971
  return;
5902
5972
  }
5903
5973
  const value = /** @type {Literal} */ (statement.expression).value;
5904
- if (value === "use strict") {
5905
- this.scope.isStrict = true;
5906
- } else if (value === "use asm") {
5974
+ if (value === "use asm") {
5907
5975
  this.scope.isAsmJs = true;
5908
5976
  }
5977
+ for (const directiveStatement of statements) {
5978
+ const directive = this.getDirective(directiveStatement);
5979
+ if (directive === undefined) break;
5980
+ if (directive === "use strict") {
5981
+ this.scope.isStrict = true;
5982
+ break;
5983
+ }
5984
+ }
5909
5985
  }
5910
5986
 
5911
5987
  /**
@@ -6672,7 +6748,11 @@ class JavascriptParser extends Parser {
6672
6748
  const comments = this.comments;
6673
6749
  if (comments === undefined) return position;
6674
6750
  const source = this._source;
6675
- for (let index = comments.length - 1; index >= 0; index--) {
6751
+ for (
6752
+ let index = binarySearchBounds.le(comments, position, compareCommentEnd);
6753
+ index >= 0;
6754
+ index--
6755
+ ) {
6676
6756
  const range = /** @type {Range} */ (comments[index].range);
6677
6757
  if (range[1] > position) continue;
6678
6758
  // with no source to read, nothing can be ruled out, so the run is
@@ -6870,7 +6950,7 @@ class JavascriptParser extends Parser {
6870
6950
  */
6871
6951
  getTagData(name, tag) {
6872
6952
  const info = this.scope.definitions.get(name);
6873
- if (info instanceof VariableInfo) {
6953
+ if (JavascriptParser.isVariableInfo(info)) {
6874
6954
  let tagInfo = info.tagInfo;
6875
6955
  while (tagInfo !== undefined) {
6876
6956
  if (tagInfo.tag === tag) return tagInfo.data;
@@ -6896,7 +6976,7 @@ class JavascriptParser extends Parser {
6896
6976
  data,
6897
6977
  next: undefined
6898
6978
  });
6899
- } else if (oldInfo instanceof VariableInfo) {
6979
+ } else if (JavascriptParser.isVariableInfo(oldInfo)) {
6900
6980
  newInfo = new VariableInfo(
6901
6981
  oldInfo.declaredScope,
6902
6982
  oldInfo.name,
@@ -6926,7 +7006,7 @@ class JavascriptParser extends Parser {
6926
7006
  const oldInfo = this.scope.definitions.get(name);
6927
7007
  // Don't redefine variable in same scope to keep existing tags
6928
7008
  if (
6929
- oldInfo instanceof VariableInfo &&
7009
+ JavascriptParser.isVariableInfo(oldInfo) &&
6930
7010
  oldInfo.declaredScope === this.scope
6931
7011
  ) {
6932
7012
  return;
@@ -6952,7 +7032,7 @@ class JavascriptParser extends Parser {
6952
7032
  isVariableDefined(name) {
6953
7033
  const info = this.scope.definitions.get(name);
6954
7034
  if (info === undefined) return false;
6955
- if (info instanceof VariableInfo) {
7035
+ if (JavascriptParser.isVariableInfo(info)) {
6956
7036
  return !info.isFree();
6957
7037
  }
6958
7038
  return true;
@@ -6968,7 +7048,7 @@ class JavascriptParser extends Parser {
6968
7048
  _isDefinedPlainVariable(name) {
6969
7049
  const info = this.scope.definitions.get(name);
6970
7050
  if (info === undefined) return false;
6971
- if (info instanceof VariableInfo) {
7051
+ if (JavascriptParser.isVariableInfo(info)) {
6972
7052
  return !(info.isFree() || info.isTagged() || info.tagInfo !== undefined);
6973
7053
  }
6974
7054
  return true;
@@ -7031,7 +7111,7 @@ class JavascriptParser extends Parser {
7031
7111
  /**
7032
7112
  * Parses comment options.
7033
7113
  * @param {Range} range range of the comment
7034
- * @returns {{ options: Record<string, EXPECTED_ANY> | null, errors: (Error & { comment: Comment })[] | null }} result
7114
+ * @returns {{ options: MagicCommentOptions | null, errors: (Error & { comment: Comment })[] | null }} result
7035
7115
  */
7036
7116
  parseCommentOptions(range) {
7037
7117
  return parseCommentOptionsInRange(
@@ -7131,7 +7211,7 @@ class JavascriptParser extends Parser {
7131
7211
  const info = this.getVariableInfo(varName);
7132
7212
  /** @type {string} */
7133
7213
  let name;
7134
- if (info instanceof VariableInfo && info.name) {
7214
+ if (JavascriptParser.isVariableInfo(info) && info.name) {
7135
7215
  if (!info.isFree()) return;
7136
7216
  name = info.name;
7137
7217
  } else if (typeof info !== "string") {
@@ -7151,7 +7231,7 @@ class JavascriptParser extends Parser {
7151
7231
  const info = this.getVariableInfo(varName);
7152
7232
  /** @type {string} */
7153
7233
  let name;
7154
- if (info instanceof VariableInfo && info.name) {
7234
+ if (JavascriptParser.isVariableInfo(info) && info.name) {
7155
7235
  if (!info.isFree() && !info.isTagged()) return;
7156
7236
  name = info.name;
7157
7237
  } else if (typeof info !== "string") {
@@ -7262,7 +7342,7 @@ class JavascriptParser extends Parser {
7262
7342
  */
7263
7343
  _resolveMemberRoot(rootName) {
7264
7344
  const info = this.getVariableInfo(rootName);
7265
- if (info instanceof VariableInfo && info.name) {
7345
+ if (JavascriptParser.isVariableInfo(info) && info.name) {
7266
7346
  if (!info.isFree() && !info.isTagged()) return;
7267
7347
  this._memberRootInfo = info;
7268
7348
  return info.name;
@@ -7393,6 +7473,15 @@ class JavascriptParser extends Parser {
7393
7473
  );
7394
7474
  }
7395
7475
 
7476
+ /**
7477
+ * Whether a definition is a variable rather than a free name or a scope.
7478
+ * @param {unknown} value a scope definition
7479
+ * @returns {value is VariableInfo} true when the value is a variable
7480
+ */
7481
+ static isVariableInfo(value) {
7482
+ return value instanceof VariableInfo;
7483
+ }
7484
+
7396
7485
  /**
7397
7486
  * Get module parse function.
7398
7487
  * @param {Compilation} compilation compilation
@@ -7401,10 +7490,7 @@ class JavascriptParser extends Parser {
7401
7490
  */
7402
7491
  static _getModuleParseFunction(compilation, module) {
7403
7492
  // Get from module if available
7404
- if (
7405
- module instanceof NormalModule &&
7406
- module.parser instanceof JavascriptParser
7407
- ) {
7493
+ if (module.is("normal") && module.parser instanceof JavascriptParser) {
7408
7494
  return module.parser.options.parse;
7409
7495
  }
7410
7496