@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -51,6 +51,7 @@ const cachedCleverMerge = (first, second) => {
51
51
  };
52
52
 
53
53
  /**
54
+ * Caches d set property.
54
55
  * @template T
55
56
  * @param {Partial<T>} obj object
56
57
  * @param {string} property property
@@ -86,10 +87,12 @@ const cachedSetProperty = (obj, property, value) => {
86
87
  };
87
88
 
88
89
  /**
90
+ * Defines the by values type used by this module.
89
91
  * @typedef {Map<string, EXPECTED_ANY>} ByValues
90
92
  */
91
93
 
92
94
  /**
95
+ * Defines the object parsed property entry type used by this module.
93
96
  * @template T
94
97
  * @typedef {object} ObjectParsedPropertyEntry
95
98
  * @property {T[keyof T] | undefined} base base value
@@ -100,16 +103,19 @@ const cachedSetProperty = (obj, property, value) => {
100
103
  /** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
101
104
 
102
105
  /**
106
+ * Defines the parsed object static type used by this module.
103
107
  * @template {object} T
104
108
  * @typedef {Map<keyof T, ObjectParsedPropertyEntry<T>>} ParsedObjectStatic
105
109
  */
106
110
 
107
111
  /**
112
+ * Defines the parsed object dynamic type used by this module.
108
113
  * @template {object} T
109
114
  * @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
110
115
  */
111
116
 
112
117
  /**
118
+ * Defines the parsed object type used by this module.
113
119
  * @template {object} T
114
120
  * @typedef {object} ParsedObject
115
121
  * @property {ParsedObjectStatic<T>} static static properties (key is property name)
@@ -120,21 +126,23 @@ const cachedSetProperty = (obj, property, value) => {
120
126
  const parseCache = new WeakMap();
121
127
 
122
128
  /**
129
+ * Caches d parse object.
123
130
  * @template {object} T
124
131
  * @param {T} obj the object
125
132
  * @returns {ParsedObject<T>} parsed object
126
133
  */
127
134
  const cachedParseObject = (obj) => {
128
- const entry = parseCache.get(/** @type {EXPECTED_OBJECT} */ (obj));
135
+ const entry = parseCache.get(obj);
129
136
  if (entry !== undefined) return entry;
130
137
  const result = parseObject(obj);
131
- parseCache.set(/** @type {EXPECTED_OBJECT} */ (obj), result);
138
+ parseCache.set(obj, result);
132
139
  return result;
133
140
  };
134
141
 
135
142
  /** @typedef {{ [p: string]: { [p: string]: EXPECTED_ANY } } | DynamicFunction} ByObject */
136
143
 
137
144
  /**
145
+ * Returns parsed object.
138
146
  * @template {object} T
139
147
  * @param {T} obj the object
140
148
  * @returns {ParsedObject<T>} parsed object
@@ -145,6 +153,7 @@ const parseObject = (obj) => {
145
153
  /** @type {ParsedObjectDynamic<T> | undefined} */
146
154
  let dynamicInfo;
147
155
  /**
156
+ * Returns object parsed property entry.
148
157
  * @param {keyof T} p path
149
158
  * @returns {Partial<ObjectParsedPropertyEntry<T>>} object parsed property entry
150
159
  */
@@ -221,6 +230,7 @@ const parseObject = (obj) => {
221
230
  };
222
231
 
223
232
  /**
233
+ * Returns the object.
224
234
  * @template {object} T
225
235
  * @param {ParsedObjectStatic<T>} info static properties (key is property name)
226
236
  * @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
@@ -269,6 +279,7 @@ const VALUE_TYPE_OBJECT = 3;
269
279
  const VALUE_TYPE_DELETE = 4;
270
280
 
271
281
  /**
282
+ * Returns value type.
272
283
  * @template T
273
284
  * @param {T} value a single value
274
285
  * @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
@@ -311,6 +322,7 @@ const cleverMerge = (first, second) => {
311
322
  };
312
323
 
313
324
  /**
325
+ * Returns merged object of first and second object.
314
326
  * @template {object} T
315
327
  * @template {object} O
316
328
  * Merges two objects. Objects are deeply clever merged.
@@ -378,6 +390,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
378
390
  };
379
391
 
380
392
  /**
393
+ * Merges the provided values into a single result.
381
394
  * @template T, O
382
395
  * @param {ObjectParsedPropertyEntry<T>} firstEntry a
383
396
  * @param {ObjectParsedPropertyEntry<O>} secondEntry b
@@ -510,6 +523,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
510
523
  };
511
524
 
512
525
  /**
526
+ * Gets from by values.
513
527
  * @template V
514
528
  * @param {ByValues} byValues all values
515
529
  * @param {string} key value of the selector
@@ -523,6 +537,7 @@ const getFromByValues = (byValues, key) => {
523
537
  };
524
538
 
525
539
  /**
540
+ * Merges single value.
526
541
  * @template A
527
542
  * @template B
528
543
  * @param {A | A[]} a value
@@ -585,6 +600,7 @@ const mergeSingleValue = (a, b, internalCaching) => {
585
600
  };
586
601
 
587
602
  /**
603
+ * Removes operations.
588
604
  * @template {object} T
589
605
  * @param {T} obj the object
590
606
  * @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
@@ -632,6 +648,7 @@ const removeOperations = (obj, keysToKeepOriginalValue = []) => {
632
648
  };
633
649
 
634
650
  /**
651
+ * Resolves by property.
635
652
  * @template T
636
653
  * @template {keyof T} P
637
654
  * @template V
@@ -24,50 +24,57 @@ const { compareRuntime } = require("./runtime");
24
24
  /** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
25
25
 
26
26
  /**
27
+ * Defines the dependency source order type used by this module.
27
28
  * @typedef {object} DependencySourceOrder
28
29
  * @property {number} main the main source order
29
30
  * @property {number} sub the sub source order
30
31
  */
31
32
 
32
33
  /**
34
+ * Defines the comparator type used by this module.
33
35
  * @template T
34
36
  * @typedef {(a: T, b: T) => -1 | 0 | 1} Comparator
35
37
  */
36
38
  /**
39
+ * Defines the raw parameterized comparator type used by this module.
37
40
  * @template {object} TArg
38
41
  * @template T
39
42
  * @typedef {(tArg: TArg, a: T, b: T) => -1 | 0 | 1} RawParameterizedComparator
40
43
  */
41
44
  /**
45
+ * Defines the parameterized comparator type used by this module.
42
46
  * @template {object} TArg
43
47
  * @template T
44
48
  * @typedef {(tArg: TArg) => Comparator<T>} ParameterizedComparator
45
49
  */
46
50
 
47
51
  /**
52
+ * Creates a cached parameterized comparator.
48
53
  * @template {object} TArg
49
54
  * @template {object} T
50
55
  * @param {RawParameterizedComparator<TArg, T>} fn comparator with argument
51
56
  * @returns {ParameterizedComparator<TArg, T>} comparator
52
57
  */
53
58
  const createCachedParameterizedComparator = (fn) => {
54
- /** @type {WeakMap<EXPECTED_OBJECT, Comparator<T>>} */
59
+ /** @type {WeakMap<TArg, Comparator<T>>} */
55
60
  const map = new WeakMap();
56
61
  return (arg) => {
57
- const cachedResult = map.get(/** @type {EXPECTED_OBJECT} */ (arg));
62
+ const cachedResult = map.get(arg);
58
63
  if (cachedResult !== undefined) return cachedResult;
64
+ // arrow closure dispatches faster than a bound function on the sort hot path
59
65
  /**
60
66
  * @param {T} a first item
61
67
  * @param {T} b second item
62
68
  * @returns {-1 | 0 | 1} compare result
63
69
  */
64
- const result = fn.bind(null, arg);
65
- map.set(/** @type {EXPECTED_OBJECT} */ (arg), result);
70
+ const result = (a, b) => fn(arg, a, b);
71
+ map.set(arg, result);
66
72
  return result;
67
73
  };
68
74
  };
69
75
 
70
76
  /**
77
+ * Compares the provided values and returns their ordering.
71
78
  * @param {string | number} a first id
72
79
  * @param {string | number} b second id
73
80
  * @returns {-1 | 0 | 1} compare result
@@ -82,6 +89,7 @@ const compareIds = (a, b) => {
82
89
  };
83
90
 
84
91
  /**
92
+ * Compares iterables.
85
93
  * @template T
86
94
  * @param {Comparator<T>} elementComparator comparator for elements
87
95
  * @returns {Comparator<Iterable<T>>} comparator for iterables of elements
@@ -90,6 +98,7 @@ const compareIterables = (elementComparator) => {
90
98
  const cacheEntry = compareIteratorsCache.get(elementComparator);
91
99
  if (cacheEntry !== undefined) return cacheEntry;
92
100
  /**
101
+ * Returns compare result.
93
102
  * @param {Iterable<T>} a first value
94
103
  * @param {Iterable<T>} b second value
95
104
  * @returns {-1 | 0 | 1} compare result
@@ -177,6 +186,7 @@ const compareLocations = (a, b) => {
177
186
  };
178
187
 
179
188
  /**
189
+ * Compares modules by id.
180
190
  * @param {ChunkGraph} chunkGraph the chunk graph
181
191
  * @param {Module} a module
182
192
  * @param {Module} b module
@@ -189,6 +199,7 @@ const compareModulesById = (chunkGraph, a, b) =>
189
199
  );
190
200
 
191
201
  /**
202
+ * Compares the provided values and returns their ordering.
192
203
  * @param {number} a number
193
204
  * @param {number} b number
194
205
  * @returns {-1 | 0 | 1} compare result
@@ -203,6 +214,7 @@ const compareNumbers = (a, b) => {
203
214
  };
204
215
 
205
216
  /**
217
+ * Compares strings numeric.
206
218
  * @param {string} a string
207
219
  * @param {string} b string
208
220
  * @returns {-1 | 0 | 1} compare result
@@ -274,6 +286,7 @@ const compareStringsNumeric = (a, b) => {
274
286
  };
275
287
 
276
288
  /**
289
+ * Compares modules by post order index or identifier.
277
290
  * @param {ModuleGraph} moduleGraph the module graph
278
291
  * @param {Module} a module
279
292
  * @param {Module} b module
@@ -289,6 +302,7 @@ const compareModulesByPostOrderIndexOrIdentifier = (moduleGraph, a, b) => {
289
302
  };
290
303
 
291
304
  /**
305
+ * Compares modules by pre order index or identifier.
292
306
  * @param {ModuleGraph} moduleGraph the module graph
293
307
  * @param {Module} a module
294
308
  * @param {Module} b module
@@ -304,6 +318,7 @@ const compareModulesByPreOrderIndexOrIdentifier = (moduleGraph, a, b) => {
304
318
  };
305
319
 
306
320
  /**
321
+ * Compares modules by id or identifier.
307
322
  * @param {ChunkGraph} chunkGraph the chunk graph
308
323
  * @param {Module} a module
309
324
  * @param {Module} b module
@@ -332,6 +347,7 @@ const compareModulesByFullName = (compiler, a, b) => {
332
347
  };
333
348
 
334
349
  /**
350
+ * Compares the provided values and returns their ordering.
335
351
  * @param {ChunkGraph} chunkGraph the chunk graph
336
352
  * @param {Chunk} a chunk
337
353
  * @param {Chunk} b chunk
@@ -340,6 +356,7 @@ const compareModulesByFullName = (compiler, a, b) => {
340
356
  const compareChunks = (chunkGraph, a, b) => chunkGraph.compareChunks(a, b);
341
357
 
342
358
  /**
359
+ * Compares the provided values and returns their ordering.
343
360
  * @param {string} a first string
344
361
  * @param {string} b second string
345
362
  * @returns {-1 | 0 | 1} compare result
@@ -351,6 +368,7 @@ const compareStrings = (a, b) => {
351
368
  };
352
369
 
353
370
  /**
371
+ * Compares chunk groups by index.
354
372
  * @param {ChunkGroup} a first chunk group
355
373
  * @param {ChunkGroup} b second chunk group
356
374
  * @returns {-1 | 0 | 1} compare result
@@ -359,6 +377,7 @@ const compareChunkGroupsByIndex = (a, b) =>
359
377
  /** @type {number} */ (a.index) < /** @type {number} */ (b.index) ? -1 : 1;
360
378
 
361
379
  /**
380
+ * Represents TwoKeyWeakMap.
362
381
  * @template {EXPECTED_OBJECT} K1
363
382
  * @template {EXPECTED_OBJECT} K2
364
383
  * @template T
@@ -373,6 +392,7 @@ class TwoKeyWeakMap {
373
392
  }
374
393
 
375
394
  /**
395
+ * Returns value.
376
396
  * @param {K1} key1 first key
377
397
  * @param {K2} key2 second key
378
398
  * @returns {T | undefined} value
@@ -386,6 +406,7 @@ class TwoKeyWeakMap {
386
406
  }
387
407
 
388
408
  /**
409
+ * Updates value using the provided key1.
389
410
  * @param {K1} key1 first key
390
411
  * @param {K2} key2 second key
391
412
  * @param {T | undefined} value new value
@@ -405,6 +426,7 @@ class TwoKeyWeakMap {
405
426
  const concatComparatorsCache = new TwoKeyWeakMap();
406
427
 
407
428
  /**
429
+ * Concat comparators.
408
430
  * @template T
409
431
  * @param {Comparator<T>} c1 comparator
410
432
  * @param {Comparator<T>} c2 comparator
@@ -421,6 +443,7 @@ const concatComparators = (c1, c2, ...cRest) => {
421
443
  );
422
444
  if (cacheEntry !== undefined) return cacheEntry;
423
445
  /**
446
+ * Returns compare result.
424
447
  * @param {T} a first value
425
448
  * @param {T} b second value
426
449
  * @returns {-1 | 0 | 1} compare result
@@ -435,6 +458,7 @@ const concatComparators = (c1, c2, ...cRest) => {
435
458
  };
436
459
 
437
460
  /**
461
+ * Defines the selector type used by this module.
438
462
  * @template A, B
439
463
  * @typedef {(input: A) => B | undefined | null} Selector
440
464
  */
@@ -443,6 +467,7 @@ const concatComparators = (c1, c2, ...cRest) => {
443
467
  const compareSelectCache = new TwoKeyWeakMap();
444
468
 
445
469
  /**
470
+ * Compares the provided values and returns their ordering.
446
471
  * @template T
447
472
  * @template R
448
473
  * @param {Selector<T, R>} getter getter for value
@@ -453,6 +478,7 @@ const compareSelect = (getter, comparator) => {
453
478
  const cacheEntry = compareSelectCache.get(getter, comparator);
454
479
  if (cacheEntry !== undefined) return cacheEntry;
455
480
  /**
481
+ * Returns compare result.
456
482
  * @param {T} a first value
457
483
  * @param {T} b second value
458
484
  * @returns {-1 | 0 | 1} compare result
@@ -481,6 +507,7 @@ const compareIteratorsCache = new WeakMap();
481
507
  // TODO this is no longer needed when minimum node.js version is >= 12
482
508
  // since these versions ship with a stable sort function
483
509
  /**
510
+ * Keep original order.
484
511
  * @template T
485
512
  * @param {Iterable<T>} iterable original ordered list
486
513
  * @returns {Comparator<T>} comparator
@@ -500,6 +527,7 @@ const keepOriginalOrder = (iterable) => {
500
527
  };
501
528
 
502
529
  /**
530
+ * Compares chunks natural.
503
531
  * @param {ChunkGraph} chunkGraph the chunk graph
504
532
  * @returns {Comparator<Chunk>} comparator
505
533
  */
@@ -511,6 +539,7 @@ const compareChunksNatural = (chunkGraph) => {
511
539
  compareSelect((chunk) => chunk.runtime, compareRuntime),
512
540
  compareSelect(
513
541
  /**
542
+ * Handles the callback logic for this hook.
514
543
  * @param {Chunk} chunk a chunk
515
544
  * @returns {Iterable<Module>} modules
516
545
  */
@@ -591,6 +620,7 @@ module.exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
591
620
  module.exports.compareChunks =
592
621
  createCachedParameterizedComparator(compareChunks);
593
622
  /**
623
+ * Returns compare result.
594
624
  * @param {Chunk} a chunk
595
625
  * @param {Chunk} b chunk
596
626
  * @returns {-1 | 0 | 1} compare result
@@ -617,6 +647,7 @@ module.exports.compareModulesById =
617
647
  module.exports.compareModulesByIdOrIdentifier =
618
648
  createCachedParameterizedComparator(compareModulesByIdOrIdentifier);
619
649
  /**
650
+ * Returns compare result.
620
651
  * @param {Module} a module
621
652
  * @param {Module} b module
622
653
  * @returns {-1 | 0 | 1} compare result
@@ -6,12 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns quoted meta.
9
10
  * @param {string} str string
10
11
  * @returns {string} quoted meta
11
12
  */
12
13
  const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
13
14
 
14
15
  /**
16
+ * Quote meta in char class.
15
17
  * @param {string} char character to escape for use in character class
16
18
  * @returns {string} escaped character
17
19
  */
@@ -85,6 +87,7 @@ const formatRange = (start, end) => {
85
87
  };
86
88
 
87
89
  /**
90
+ * Returns string.
88
91
  * @param {string} str string
89
92
  * @returns {string} string
90
93
  */
@@ -96,6 +99,7 @@ const toSimpleString = (str) => {
96
99
  };
97
100
 
98
101
  /**
102
+ * Compile boolean matcher.
99
103
  * @param {Record<string | number, boolean>} map value map
100
104
  * @returns {boolean | ((value: string) => string)} true/false, when unconditionally true/false, or a template function to determine the value at runtime
101
105
  */
@@ -108,6 +112,7 @@ const compileBooleanMatcher = (map) => {
108
112
  };
109
113
 
110
114
  /**
115
+ * Compile boolean matcher from lists.
111
116
  * @param {string[]} positiveItems positive items
112
117
  * @param {string[]} negativeItems negative items
113
118
  * @returns {(value: string) => string} a template function to determine the value at runtime
@@ -132,6 +137,7 @@ const compileBooleanMatcherFromLists = (positiveItems, negativeItems) => {
132
137
  /** @typedef {string[][]} ListOfCommonItems */
133
138
 
134
139
  /**
140
+ * Returns list of common items.
135
141
  * @param {Set<string>} itemsSet items set
136
142
  * @param {(str: string) => string | false} getKey get key function
137
143
  * @param {(str: string[]) => boolean} condition condition
@@ -166,6 +172,7 @@ const popCommonItems = (itemsSet, getKey, condition) => {
166
172
  };
167
173
 
168
174
  /**
175
+ * Gets common prefix.
169
176
  * @param {string[]} items items
170
177
  * @returns {string} common prefix
171
178
  */
@@ -184,6 +191,7 @@ const getCommonPrefix = (items) => {
184
191
  };
185
192
 
186
193
  /**
194
+ * Gets common suffix.
187
195
  * @param {string[]} items items
188
196
  * @returns {string} common suffix
189
197
  */
@@ -202,6 +210,7 @@ const getCommonSuffix = (items) => {
202
210
  };
203
211
 
204
212
  /**
213
+ * Returns regexp.
205
214
  * @param {string[]} itemsArr array of items
206
215
  * @returns {string} regexp
207
216
  */
@@ -7,10 +7,10 @@
7
7
 
8
8
  const Template = require("../Template");
9
9
 
10
- /** @typedef {import("eslint-scope").Scope} Scope */
11
- /** @typedef {import("eslint-scope").Reference} Reference */
12
- /** @typedef {import("eslint-scope").Variable} Variable */
13
10
  /** @typedef {import("estree").Node} Node */
11
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Scope} Scope */
12
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Reference} Reference */
13
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Variable} Variable */
14
14
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
15
  /** @typedef {Set<string>} UsedNames */
16
16
 
@@ -18,17 +18,21 @@ const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
18
18
  const NAMESPACE_OBJECT_EXPORT = "__WEBPACK_NAMESPACE_OBJECT__";
19
19
 
20
20
  /**
21
+ * Gets all references.
21
22
  * @param {Variable} variable variable
22
23
  * @returns {Reference[]} references
23
24
  */
24
25
  const getAllReferences = (variable) => {
25
26
  let set = variable.references;
26
27
  // Look for inner scope variables too (like in class Foo { t() { Foo } })
27
- const identifiers = new Set(variable.identifiers);
28
+ // identifiers is tiny (usually 1 declaration) — indexOf beats a Set here
29
+ const identifiers = variable.identifiers;
28
30
  for (const scope of variable.scope.childScopes) {
29
31
  for (const innerVar of scope.variables) {
30
- if (innerVar.identifiers.some((id) => identifiers.has(id))) {
31
- set = [...set, ...innerVar.references];
32
+ if (innerVar.identifiers.some((id) => identifiers.includes(id))) {
33
+ // copy-on-write to keep the common no-match case allocation-free
34
+ if (set === variable.references) set = [...set];
35
+ for (const ref of innerVar.references) set.push(ref);
32
36
  break;
33
37
  }
34
38
  }
@@ -37,6 +41,7 @@ const getAllReferences = (variable) => {
37
41
  };
38
42
 
39
43
  /**
44
+ * Returns result.
40
45
  * @param {Node | Node[]} ast ast
41
46
  * @param {Node} node node
42
47
  * @returns {undefined | Node[]} result
@@ -49,6 +54,7 @@ const getPathInAst = (ast, node) => {
49
54
  const nr = /** @type {Range} */ (node.range);
50
55
 
51
56
  /**
57
+ * Returns result.
52
58
  * @param {Node} n node
53
59
  * @returns {Node[] | undefined} result
54
60
  */
@@ -65,9 +71,28 @@ const getPathInAst = (ast, node) => {
65
71
  };
66
72
 
67
73
  if (Array.isArray(ast)) {
68
- for (let i = 0; i < ast.length; i++) {
69
- const enterResult = enterNode(ast[i]);
70
- if (enterResult !== undefined) return enterResult;
74
+ // sibling ranges are ordered and disjoint; binary search the container
75
+ let lo = 0;
76
+ let hi = ast.length - 1;
77
+ while (lo <= hi) {
78
+ const mid = (lo + hi) >> 1;
79
+ const item = ast[mid];
80
+ const r = item && item.range;
81
+ if (!r) {
82
+ // holes or range-less nodes: scan the remaining window linearly
83
+ for (let i = lo; i <= hi; i++) {
84
+ const enterResult = enterNode(ast[i]);
85
+ if (enterResult !== undefined) return enterResult;
86
+ }
87
+ return;
88
+ }
89
+ if (r[0] > nr[0]) {
90
+ hi = mid - 1;
91
+ } else if (nr[0] >= r[1]) {
92
+ lo = mid + 1;
93
+ } else {
94
+ return r[1] >= nr[1] ? enterNode(item) : undefined;
95
+ }
71
96
  }
72
97
  } else if (ast && typeof ast === "object") {
73
98
  const keys =
@@ -91,7 +116,34 @@ const getPathInAst = (ast, node) => {
91
116
  }
92
117
  };
93
118
 
119
+ /** @type {Map<string, string[]>} */
120
+ const splittedInfoCache = new Map();
121
+
94
122
  /**
123
+ * Returns path segments of the cleaned extra info.
124
+ * @param {string} extraInfo extra info
125
+ * @returns {string[]} cleaned path segments
126
+ */
127
+ const getSplittedInfo = (extraInfo) => {
128
+ let splittedInfo = splittedInfoCache.get(extraInfo);
129
+ if (splittedInfo === undefined) {
130
+ // bound the cache — extraInfo repeats for every renamed binding of a
131
+ // module, but distinct values grow with project size
132
+ if (splittedInfoCache.size >= 4096) splittedInfoCache.clear();
133
+ // Remove uncool stuff
134
+ splittedInfo = extraInfo
135
+ .replace(
136
+ /\.+\/|(?:\/index)?\.[a-zA-Z0-9]{1,4}(?:$|\s|\?)|\s*\+\s*\d+\s*modules/g,
137
+ ""
138
+ )
139
+ .split("/");
140
+ splittedInfoCache.set(extraInfo, splittedInfo);
141
+ }
142
+ return splittedInfo;
143
+ };
144
+
145
+ /**
146
+ * Returns found new name.
95
147
  * @param {string} oldName old name
96
148
  * @param {UsedNames} usedNamed1 used named 1
97
149
  * @param {UsedNames} usedNamed2 used named 2
@@ -108,15 +160,9 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
108
160
  name = "namespaceObject";
109
161
  }
110
162
 
111
- // Remove uncool stuff
112
- extraInfo = extraInfo.replace(
113
- /\.+\/|(?:\/index)?\.[a-zA-Z0-9]{1,4}(?:$|\s|\?)|\s*\+\s*\d+\s*modules/g,
114
- ""
115
- );
116
-
117
- const splittedInfo = extraInfo.split("/");
118
- while (splittedInfo.length) {
119
- name = splittedInfo.pop() + (name ? `_${name}` : "");
163
+ const splittedInfo = getSplittedInfo(extraInfo);
164
+ for (let i = splittedInfo.length - 1; i >= 0; i--) {
165
+ name = splittedInfo[i] + (name ? `_${name}` : "");
120
166
  const nameIdent = Template.toIdentifier(name);
121
167
  if (
122
168
  !usedNamed1.has(nameIdent) &&
@@ -126,15 +172,18 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
126
172
  }
127
173
  }
128
174
 
175
+ // `_${i}` is identifier-safe, so escaping the base once is equivalent to
176
+ // escaping every candidate — avoids two regexes per collision
177
+ const nameIdent = Template.toIdentifier(name);
129
178
  let i = 0;
130
- let nameWithNumber = Template.toIdentifier(`${name}_${i}`);
179
+ let nameWithNumber = `${nameIdent}_${i}`;
131
180
  while (
132
181
  usedNamed1.has(nameWithNumber) ||
133
182
  // eslint-disable-next-line no-unmodified-loop-condition
134
183
  (usedNamed2 && usedNamed2.has(nameWithNumber))
135
184
  ) {
136
185
  i++;
137
- nameWithNumber = Template.toIdentifier(`${name}_${i}`);
186
+ nameWithNumber = `${nameIdent}_${i}`;
138
187
  }
139
188
  return nameWithNumber;
140
189
  }
@@ -142,6 +191,7 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
142
191
  /** @typedef {Set<Scope>} ScopeSet */
143
192
 
144
193
  /**
194
+ * Adds scope symbols.
145
195
  * @param {Scope | null} s scope
146
196
  * @param {UsedNames} nameSet name set
147
197
  * @param {ScopeSet} scopeSet1 scope set 1
@@ -199,23 +249,29 @@ const RESERVED_NAMES = new Set(
199
249
  );
200
250
 
201
251
  /** @typedef {{ usedNames: UsedNames, alreadyCheckedScopes: ScopeSet }} ScopeInfo */
202
- /** @typedef {Map<string, ScopeInfo>} UsedNamesInScopeInfo */
252
+ /** @typedef {Map<string, Map<string, ScopeInfo>>} UsedNamesInScopeInfo */
203
253
 
204
254
  /**
255
+ * Gets used names in scope info.
205
256
  * @param {UsedNamesInScopeInfo} usedNamesInScopeInfo used names in scope info
206
257
  * @param {string} module module identifier
207
258
  * @param {string} id export id
208
259
  * @returns {ScopeInfo} info
209
260
  */
210
261
  const getUsedNamesInScopeInfo = (usedNamesInScopeInfo, module, id) => {
211
- const key = `${module}-${id}`;
212
- let info = usedNamesInScopeInfo.get(key);
262
+ // nested maps avoid building a `${module}-${id}` key string per lookup
263
+ let byId = usedNamesInScopeInfo.get(module);
264
+ if (byId === undefined) {
265
+ byId = new Map();
266
+ usedNamesInScopeInfo.set(module, byId);
267
+ }
268
+ let info = byId.get(id);
213
269
  if (info === undefined) {
214
270
  info = {
215
271
  usedNames: new Set(),
216
272
  alreadyCheckedScopes: new Set()
217
273
  };
218
- usedNamesInScopeInfo.set(key, info);
274
+ byId.set(id, info);
219
275
  }
220
276
  return info;
221
277
  };