@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
@@ -9,16 +9,22 @@ const TOMBSTONE = Symbol("tombstone");
9
9
  const UNDEFINED_MARKER = Symbol("undefined");
10
10
 
11
11
  /**
12
+ * Public cell value exposed by `StackedMap`, where `undefined` is preserved as
13
+ * a valid stored result.
12
14
  * @template T
13
15
  * @typedef {T | undefined} Cell<T>
14
16
  */
15
17
 
16
18
  /**
19
+ * Internal cell value used to distinguish deleted entries and explicit
20
+ * `undefined` assignments while traversing stacked scopes.
17
21
  * @template T
18
22
  * @typedef {T | typeof TOMBSTONE | typeof UNDEFINED_MARKER} InternalCell<T>
19
23
  */
20
24
 
21
25
  /**
26
+ * Converts an internal key/value pair into the external representation returned
27
+ * by iteration helpers.
22
28
  * @template K
23
29
  * @template V
24
30
  * @param {[K, InternalCell<V>]} pair the internal cell
@@ -34,130 +40,243 @@ const extractPair = (pair) => {
34
40
  };
35
41
 
36
42
  /**
43
+ * Layered map that supports child scopes while memoizing lookups from parent
44
+ * scopes. Layers form a linked parent chain, so `createChild` is O(1) instead
45
+ * of copying a layer array per scope. A layer's `Map` is only allocated on its
46
+ * first own write, and lookup results are memoized into the nearest
47
+ * `Map`-bearing layer of the walk — read-only layers (most block scopes) stay
48
+ * allocation-free and share their parent's memoized entries.
37
49
  * @template K
38
50
  * @template V
39
51
  */
40
52
  class StackedMap {
41
53
  /**
42
- * @param {Map<K, InternalCell<V>>[]=} parentStack an optional parent
54
+ * Creates a new map layer on top of an optional parent.
55
+ * @param {StackedMap<K, V>=} parent an optional parent map
43
56
  */
44
- constructor(parentStack) {
45
- /** @type {Map<K, InternalCell<V>>} */
46
- this.map = new Map();
47
- /** @type {Map<K, InternalCell<V>>[]} */
48
- this.stack = parentStack === undefined ? [] : [...parentStack];
49
- this.stack.push(this.map);
57
+ constructor(parent) {
58
+ /** @type {Map<K, InternalCell<V>> | undefined} */
59
+ this.map = undefined;
60
+ /** @type {StackedMap<K, V> | undefined} */
61
+ this.parent = parent;
50
62
  }
51
63
 
52
64
  /**
65
+ * Stores a value in the current layer, preserving explicit `undefined`
66
+ * values with an internal marker.
53
67
  * @param {K} item the key of the element to add
54
68
  * @param {V} value the value of the element to add
55
69
  * @returns {void}
56
70
  */
57
71
  set(item, value) {
58
- this.map.set(item, value === undefined ? UNDEFINED_MARKER : value);
72
+ (this.map || (this.map = new Map())).set(
73
+ item,
74
+ value === undefined ? UNDEFINED_MARKER : value
75
+ );
59
76
  }
60
77
 
61
78
  /**
79
+ * Deletes a key from the current view, either by removing it outright in the
80
+ * root layer or by recording a tombstone in child layers.
62
81
  * @param {K} item the item to delete
63
82
  * @returns {void}
64
83
  */
65
84
  delete(item) {
66
- if (this.stack.length > 1) {
67
- this.map.set(item, TOMBSTONE);
68
- } else {
85
+ if (this.parent !== undefined) {
86
+ (this.map || (this.map = new Map())).set(item, TOMBSTONE);
87
+ } else if (this.map !== undefined) {
69
88
  this.map.delete(item);
70
89
  }
71
90
  }
72
91
 
73
92
  /**
93
+ * Checks whether a key exists in the current scope chain, caching any parent
94
+ * lookup result in the nearest `Map`-bearing layer.
74
95
  * @param {K} item the item to test
75
96
  * @returns {boolean} true if the item exists in this set
76
97
  */
77
98
  has(item) {
78
- const topValue = this.map.get(item);
79
- if (topValue !== undefined) {
80
- return topValue !== TOMBSTONE;
99
+ const own = this.map;
100
+ if (own !== undefined) {
101
+ const topValue = own.get(item);
102
+ if (topValue !== undefined) {
103
+ return topValue !== TOMBSTONE;
104
+ }
81
105
  }
82
- if (this.stack.length > 1) {
83
- for (let i = this.stack.length - 2; i >= 0; i--) {
84
- const value = this.stack[i].get(item);
106
+ /** @type {StackedMap<K, V> | undefined} */
107
+ let memoTarget = own !== undefined ? this : undefined;
108
+ /** @type {StackedMap<K, V> | undefined} */
109
+ let current = this.parent;
110
+ while (current !== undefined) {
111
+ const map = current.map;
112
+ if (map !== undefined) {
113
+ const value = map.get(item);
85
114
  if (value !== undefined) {
86
- this.map.set(item, value);
115
+ if (memoTarget !== undefined) {
116
+ /** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
117
+ item,
118
+ value
119
+ );
120
+ }
87
121
  return value !== TOMBSTONE;
88
122
  }
123
+ if (memoTarget === undefined) memoTarget = current;
89
124
  }
90
- this.map.set(item, TOMBSTONE);
125
+ current = current.parent;
126
+ }
127
+ if (memoTarget !== undefined) {
128
+ /** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
129
+ item,
130
+ TOMBSTONE
131
+ );
91
132
  }
92
133
  return false;
93
134
  }
94
135
 
95
136
  /**
137
+ * Returns the visible value for a key, caching parent hits and misses in the
138
+ * nearest `Map`-bearing layer so repeated lookups (from this layer or any
139
+ * sibling below that layer) answer with a single probe.
96
140
  * @param {K} item the key of the element to return
97
141
  * @returns {Cell<V>} the value of the element
98
142
  */
99
143
  get(item) {
100
- const topValue = this.map.get(item);
101
- if (topValue !== undefined) {
102
- return topValue === TOMBSTONE || topValue === UNDEFINED_MARKER
103
- ? undefined
104
- : topValue;
144
+ const own = this.map;
145
+ if (own !== undefined) {
146
+ const topValue = own.get(item);
147
+ if (topValue !== undefined) {
148
+ return topValue === TOMBSTONE || topValue === UNDEFINED_MARKER
149
+ ? undefined
150
+ : topValue;
151
+ }
105
152
  }
106
- if (this.stack.length > 1) {
107
- for (let i = this.stack.length - 2; i >= 0; i--) {
108
- const value = this.stack[i].get(item);
153
+ /** @type {StackedMap<K, V> | undefined} */
154
+ let memoTarget = own !== undefined ? this : undefined;
155
+ /** @type {StackedMap<K, V> | undefined} */
156
+ let current = this.parent;
157
+ while (current !== undefined) {
158
+ const map = current.map;
159
+ if (map !== undefined) {
160
+ const value = map.get(item);
109
161
  if (value !== undefined) {
110
- this.map.set(item, value);
162
+ if (memoTarget !== undefined) {
163
+ /** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
164
+ item,
165
+ value
166
+ );
167
+ }
111
168
  return value === TOMBSTONE || value === UNDEFINED_MARKER
112
169
  ? undefined
113
170
  : value;
114
171
  }
172
+ if (memoTarget === undefined) memoTarget = current;
115
173
  }
116
- this.map.set(item, TOMBSTONE);
174
+ current = current.parent;
175
+ }
176
+ if (memoTarget !== undefined) {
177
+ /** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
178
+ item,
179
+ TOMBSTONE
180
+ );
117
181
  }
118
182
  }
119
183
 
184
+ /**
185
+ * Collapses the parent chain into a single concrete map.
186
+ */
120
187
  _compress() {
121
- if (this.stack.length === 1) return;
122
- this.map = new Map();
123
- for (const data of this.stack) {
124
- for (const pair of data) {
125
- if (pair[1] === TOMBSTONE) {
126
- this.map.delete(pair[0]);
127
- } else {
128
- this.map.set(pair[0], pair[1]);
188
+ if (this.parent === undefined) {
189
+ const map = this.map;
190
+ if (map === undefined) {
191
+ this.map = new Map();
192
+ return;
193
+ }
194
+ // a parent-less layer holds tombstones only as memoized misses
195
+ // (deletes remove outright) — drop them from the visible view
196
+ for (const pair of map) {
197
+ if (pair[1] === TOMBSTONE) map.delete(pair[0]);
198
+ }
199
+ return;
200
+ }
201
+ /** @type {StackedMap<K, V>[]} */
202
+ const layers = [];
203
+ /** @type {StackedMap<K, V> | undefined} */
204
+ let current = this;
205
+ do {
206
+ layers.push(current);
207
+ current = current.parent;
208
+ } while (current !== undefined);
209
+ const map = new Map();
210
+ for (let i = layers.length - 1; i >= 0; i--) {
211
+ const layerMap = layers[i].map;
212
+ if (layerMap !== undefined) {
213
+ for (const pair of layerMap) {
214
+ if (pair[1] === TOMBSTONE) {
215
+ map.delete(pair[0]);
216
+ } else {
217
+ map.set(pair[0], pair[1]);
218
+ }
129
219
  }
130
220
  }
131
221
  }
132
- this.stack = [this.map];
222
+ this.map = map;
223
+ this.parent = undefined;
133
224
  }
134
225
 
226
+ /**
227
+ * Returns the visible keys as an array after collapsing the stack.
228
+ * @returns {K[]} array of keys
229
+ */
135
230
  asArray() {
136
231
  this._compress();
137
- return [...this.map.keys()];
232
+ return [.../** @type {Map<K, InternalCell<V>>} */ (this.map).keys()];
138
233
  }
139
234
 
235
+ /**
236
+ * Returns the visible keys as a `Set` after collapsing the stack.
237
+ * @returns {Set<K>} set of keys
238
+ */
140
239
  asSet() {
141
240
  this._compress();
142
- return new Set(this.map.keys());
241
+ return new Set(/** @type {Map<K, InternalCell<V>>} */ (this.map).keys());
143
242
  }
144
243
 
244
+ /**
245
+ * Returns visible key/value pairs using the external representation.
246
+ * @returns {[K, Cell<V>][]} array of key/value pairs
247
+ */
145
248
  asPairArray() {
146
249
  this._compress();
147
- return Array.from(this.map.entries(), extractPair);
250
+ return Array.from(
251
+ /** @type {Map<K, InternalCell<V>>} */ (this.map).entries(),
252
+ extractPair
253
+ );
148
254
  }
149
255
 
256
+ /**
257
+ * Returns the visible contents as a plain `Map`.
258
+ * @returns {Map<K, Cell<V>>} materialized map
259
+ */
150
260
  asMap() {
151
261
  return new Map(this.asPairArray());
152
262
  }
153
263
 
264
+ /**
265
+ * Returns the number of visible keys after collapsing the stack.
266
+ * @returns {number} number of keys
267
+ */
154
268
  get size() {
155
269
  this._compress();
156
- return this.map.size;
270
+ return /** @type {Map<K, InternalCell<V>>} */ (this.map).size;
157
271
  }
158
272
 
273
+ /**
274
+ * Creates a child `StackedMap` that sees the current layers as its parent
275
+ * scope.
276
+ * @returns {StackedMap<K, V>} child map
277
+ */
159
278
  createChild() {
160
- return new StackedMap(this.stack);
279
+ return new StackedMap(this);
161
280
  }
162
281
  }
163
282
 
@@ -41,7 +41,7 @@ class StringXor {
41
41
  }
42
42
 
43
43
  /**
44
- * Adds a string to the current StringXor object.
44
+ * Processes the provided str.
45
45
  * @param {string} str string
46
46
  * @returns {void}
47
47
  */
@@ -8,11 +8,14 @@
8
8
  const TupleSet = require("./TupleSet");
9
9
 
10
10
  /**
11
+ * FIFO queue for tuples that preserves uniqueness by delegating membership
12
+ * tracking to `TupleSet`.
11
13
  * @template T
12
14
  * @template V
13
15
  */
14
16
  class TupleQueue {
15
17
  /**
18
+ * Seeds the queue with an optional iterable of tuples to visit.
16
19
  * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} items The initial elements.
17
20
  */
18
21
  constructor(items) {
@@ -29,7 +32,7 @@ class TupleQueue {
29
32
  }
30
33
 
31
34
  /**
32
- * Returns the number of elements in this queue.
35
+ * Returns the number of distinct tuples currently queued.
33
36
  * @returns {number} The number of elements in this queue.
34
37
  */
35
38
  get length() {
@@ -37,7 +40,7 @@ class TupleQueue {
37
40
  }
38
41
 
39
42
  /**
40
- * Appends the specified element to this queue.
43
+ * Enqueues a tuple if it is not already present in the underlying set.
41
44
  * @param {[T, V, ...EXPECTED_ANY]} item The element to add.
42
45
  * @returns {void}
43
46
  */
@@ -46,7 +49,8 @@ class TupleQueue {
46
49
  }
47
50
 
48
51
  /**
49
- * Retrieves and removes the head of this queue.
52
+ * Removes and returns the next queued tuple, rebuilding the iterator when
53
+ * the underlying tuple set has changed since the last full pass.
50
54
  * @returns {[T, V, ...EXPECTED_ANY] | undefined} The head of the queue of `undefined` if this queue is empty.
51
55
  */
52
56
  dequeue() {
@@ -6,22 +6,28 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Nested map structure used to index tuple prefixes until the final tuple
10
+ * element can be stored in a `Set`.
9
11
  * @template K
10
12
  * @template V
11
13
  * @typedef {Map<K, InnerMap<K, V> | Set<V>>} InnerMap
12
14
  */
13
15
 
14
16
  /**
17
+ * Stores tuples of arbitrary length while preserving efficient prefix lookups
18
+ * through a tree of maps that ends in a set of final values.
15
19
  * @template T
16
20
  * @template V
17
21
  */
18
22
  class TupleSet {
19
23
  /**
24
+ * Seeds the tuple set with an optional iterable of tuples.
20
25
  * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} init init
21
26
  */
22
27
  constructor(init) {
23
28
  /** @type {InnerMap<T, V>} */
24
29
  this._map = new Map();
30
+ /** @type {number} */
25
31
  this.size = 0;
26
32
  if (init) {
27
33
  for (const tuple of init) {
@@ -31,6 +37,7 @@ class TupleSet {
31
37
  }
32
38
 
33
39
  /**
40
+ * Adds a tuple to the set, creating any missing prefix maps along the way.
34
41
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
35
42
  * @returns {void}
36
43
  */
@@ -59,6 +66,7 @@ class TupleSet {
59
66
  }
60
67
 
61
68
  /**
69
+ * Checks whether the exact tuple is already present in the set.
62
70
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
63
71
  * @returns {boolean} true, if the tuple is in the Set
64
72
  */
@@ -83,6 +91,7 @@ class TupleSet {
83
91
  }
84
92
 
85
93
  /**
94
+ * Removes a tuple from the set when it is present.
86
95
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
87
96
  * @returns {void}
88
97
  */
@@ -109,10 +118,13 @@ class TupleSet {
109
118
  }
110
119
 
111
120
  /**
121
+ * Iterates over every stored tuple by walking the nested map structure and
122
+ * yielding each complete prefix plus its terminal set value.
112
123
  * @returns {Iterator<[T, V, ...EXPECTED_ANY]>} iterator
113
124
  */
114
125
  [Symbol.iterator]() {
115
126
  /**
127
+ * Iterator type used while traversing nested tuple-prefix maps.
116
128
  * @template T, V
117
129
  * @typedef {MapIterator<[T, InnerMap<T, V> | Set<V>]>} IteratorStack
118
130
  */
@@ -127,6 +139,8 @@ class TupleSet {
127
139
  let currentSetIterator;
128
140
 
129
141
  /**
142
+ * Advances through nested maps until a terminal value set is reached or
143
+ * every remaining branch has been exhausted.
130
144
  * @param {IteratorStack<T, V>} it iterator
131
145
  * @returns {boolean} result
132
146
  */
@@ -74,6 +74,7 @@ function getScheme(specifier) {
74
74
  }
75
75
 
76
76
  /**
77
+ * Returns protocol if absolute URL specifier provided.
77
78
  * @param {string} specifier specifier
78
79
  * @returns {string | null | undefined} protocol if absolute URL specifier provided
79
80
  */
@@ -6,35 +6,49 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Strong-key child map used for tuple elements that cannot be stored in a
10
+ * `WeakMap`.
9
11
  * @template {EXPECTED_ANY[]} T
10
12
  * @template V
11
13
  * @typedef {Map<EXPECTED_ANY, WeakTupleMap<T, V>>} M
12
14
  */
13
15
 
14
16
  /**
17
+ * Weak-key child map used for tuple elements that are objects and can be held
18
+ * without preventing garbage collection.
15
19
  * @template {EXPECTED_ANY[]} T
16
20
  * @template V
17
21
  * @typedef {WeakMap<EXPECTED_OBJECT, WeakTupleMap<T, V>>} W
18
22
  */
19
23
 
20
24
  /**
25
+ * Reports whether a tuple element can be stored in a `WeakMap`.
21
26
  * @param {EXPECTED_ANY} thing thing
22
27
  * @returns {boolean} true if is weak
23
28
  */
24
29
  const isWeakKey = (thing) => typeof thing === "object" && thing !== null;
25
30
 
26
31
  /**
32
+ * Extracts the element type from a tuple-like array.
27
33
  * @template {unknown[]} T
28
34
  * @typedef {T extends ReadonlyArray<infer ElementType> ? ElementType : never} ArrayElement
29
35
  */
30
36
 
31
37
  /**
38
+ * Stores values by tuple keys while using `WeakMap` for object elements so the
39
+ * cache can release entries when those objects are collected.
32
40
  * @template {EXPECTED_ANY[]} K
33
41
  * @template V
34
42
  */
35
43
  class WeakTupleMap {
44
+ /**
45
+ * Initializes an empty tuple trie node with optional value and child maps.
46
+ */
36
47
  constructor() {
37
- /** @private */
48
+ /**
49
+ * @private
50
+ * @type {number}
51
+ */
38
52
  this.f = 0;
39
53
  /**
40
54
  * @private
@@ -54,6 +68,7 @@ class WeakTupleMap {
54
68
  }
55
69
 
56
70
  /**
71
+ * Stores a value at the node identified by the provided tuple key.
57
72
  * @param {[...K, V]} args tuple
58
73
  * @returns {void}
59
74
  */
@@ -67,6 +82,7 @@ class WeakTupleMap {
67
82
  }
68
83
 
69
84
  /**
85
+ * Checks whether the exact tuple key has a stored value.
70
86
  * @param {K} args tuple
71
87
  * @returns {boolean} true, if the tuple is in the Set
72
88
  */
@@ -81,6 +97,7 @@ class WeakTupleMap {
81
97
  }
82
98
 
83
99
  /**
100
+ * Returns the value stored for the exact tuple key, if any.
84
101
  * @param {K} args tuple
85
102
  * @returns {V | undefined} the value
86
103
  */
@@ -95,6 +112,8 @@ class WeakTupleMap {
95
112
  }
96
113
 
97
114
  /**
115
+ * Returns an existing value for the tuple or computes, stores, and returns a
116
+ * new one when the tuple is missing.
98
117
  * @param {[...K, (...args: K) => V]} args tuple
99
118
  * @returns {V} the value
100
119
  */
@@ -112,6 +131,30 @@ class WeakTupleMap {
112
131
  }
113
132
 
114
133
  /**
134
+ * Memoizes `compute(thisArg, ...args)` under the tuple key `[compute,
135
+ * ...args]`, computing it on a miss. Equivalent to `provide(compute, ...args,
136
+ * () => compute(thisArg, ...args))` but without allocating that closure (or an
137
+ * extra rest array) on every call — `ModuleGraph#cached` runs this on hot
138
+ * paths where most calls hit the cache and the closure would be pure waste.
139
+ * @param {(thisArg: EXPECTED_ANY, ...args: K) => V} compute computer, also the first key element
140
+ * @param {EXPECTED_ANY} thisArg first argument passed to `compute`
141
+ * @param {K} args remaining key elements, also passed to `compute`
142
+ * @returns {V} the value
143
+ */
144
+ cachedProvide(compute, thisArg, args) {
145
+ /** @type {WeakTupleMap<K, V>} */
146
+ let node = this._get(/** @type {ArrayElement<K>} */ (compute));
147
+ for (let i = 0; i < args.length; i++) {
148
+ node = node._get(/** @type {ArrayElement<K>} */ (args[i]));
149
+ }
150
+ if (node._hasValue()) return /** @type {V} */ (node._getValue());
151
+ const newValue = compute(thisArg, ...args);
152
+ node._setValue(newValue);
153
+ return newValue;
154
+ }
155
+
156
+ /**
157
+ * Removes the value stored for the tuple key without pruning the trie.
115
158
  * @param {K} args tuple
116
159
  * @returns {void}
117
160
  */
@@ -126,6 +169,7 @@ class WeakTupleMap {
126
169
  }
127
170
 
128
171
  /**
172
+ * Clears the stored value and all strong and weak child maps from this node.
129
173
  * @returns {void}
130
174
  */
131
175
  clear() {
@@ -135,15 +179,24 @@ class WeakTupleMap {
135
179
  this.m = undefined;
136
180
  }
137
181
 
182
+ /**
183
+ * Returns the value stored directly on this trie node.
184
+ * @returns {V | undefined} stored value
185
+ */
138
186
  _getValue() {
139
187
  return this.v;
140
188
  }
141
189
 
190
+ /**
191
+ * Reports whether this trie node currently stores a value.
192
+ * @returns {boolean} true when a value is present
193
+ */
142
194
  _hasValue() {
143
195
  return (this.f & 1) === 1;
144
196
  }
145
197
 
146
198
  /**
199
+ * Stores a value directly on this trie node.
147
200
  * @param {V} v value
148
201
  * @private
149
202
  */
@@ -152,12 +205,16 @@ class WeakTupleMap {
152
205
  this.v = v;
153
206
  }
154
207
 
208
+ /**
209
+ * Removes the value stored directly on this trie node.
210
+ */
155
211
  _deleteValue() {
156
212
  this.f &= 6;
157
213
  this.v = undefined;
158
214
  }
159
215
 
160
216
  /**
217
+ * Returns the child node for a tuple element without creating one.
161
218
  * @param {ArrayElement<K>} thing thing
162
219
  * @returns {WeakTupleMap<K, V> | undefined} thing
163
220
  * @private
@@ -176,6 +233,8 @@ class WeakTupleMap {
176
233
  }
177
234
 
178
235
  /**
236
+ * Returns the child node for a tuple element, creating and storing it when
237
+ * necessary.
179
238
  * @private
180
239
  * @param {ArrayElement<K>} thing thing
181
240
  * @returns {WeakTupleMap<K, V>} value
@@ -65,6 +65,7 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
65
65
  };
66
66
 
67
67
  /**
68
+ * Defines the search type used by this module.
68
69
  * @template T
69
70
  * @typedef {(items: T[], start: number, compareFn?: number | ((item: T, needle: number) => number), l?: number, h?: number) => number} Search
70
71
  */
@@ -127,9 +128,9 @@ const fns = {
127
128
  * const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
128
129
  *
129
130
  * // Find the index of the first element greater than 5
130
- * const index1 = gt(arr, 5); // index1 === 3
131
+ * const index1 = gt(arr, 5); // index1 === 5
131
132
  *
132
- * // Find the index of the first element less than or equal to 5
133
+ * // Find the index of the last element less than or equal to 5
133
134
  * const index2 = le(arr, 5); // index2 === 4
134
135
  * ```
135
136
  */
@@ -71,8 +71,8 @@ module.exports.getTrimmedIdsAndRange = (
71
71
  * @returns {string[]} trimmed ids
72
72
  */
73
73
  function trimIdsToThoseImported(ids, moduleGraph, dependency) {
74
- /** @type {string[]} */
75
- let trimmedIds = [];
74
+ /** @type {string[] | undefined} */
75
+ let trimmedIds;
76
76
  let currentExportsInfo = moduleGraph.getExportsInfo(
77
77
  /** @type {Module} */ (moduleGraph.getModule(dependency))
78
78
  );
@@ -95,5 +95,5 @@ function trimIdsToThoseImported(ids, moduleGraph, dependency) {
95
95
  currentExportsInfo = nestedInfo;
96
96
  }
97
97
  // Never trim to nothing. This can happen for invalid imports (e.g. import { notThere } from "./module", or import { anything } from "./missingModule")
98
- return trimmedIds.length ? trimmedIds : ids;
98
+ return trimmedIds !== undefined && trimmedIds.length ? trimmedIds : ids;
99
99
  }