@depup/webpack 5.111.1-depup.2 → 5.112.0-depup.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/README.md +6 -8
  2. package/changes.json +8 -16
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/context/ContextModule.js +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +55 -40
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -5,31 +5,34 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const ImportedBindingAssignmentError = require("../errors/ImportedBindingAssignmentError");
9
- const WebpackError = require("../errors/WebpackError");
10
- const getParserHooks = require("../hmr/parserHooks");
8
+ const ImportedBindingAssignmentError = require("../../errors/ImportedBindingAssignmentError");
9
+ const WebpackError = require("../../errors/WebpackError");
10
+ const getParserHooks = require("../../hmr/parserHooks");
11
11
  const {
12
- VariableInfo,
13
- getImportAttributes
14
- } = require("../javascript/JavascriptParser");
15
- const { getInnerGraphUtils } = require("../optimize/InnerGraph");
16
- const ConstDependency = require("./ConstDependency");
17
- const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
18
- const HarmonyAcceptImportDependency = require("./HarmonyAcceptImportDependency");
19
- const HarmonyEvaluatedImportSpecifierDependency = require("./HarmonyEvaluatedImportSpecifierDependency");
20
- const HarmonyExports = require("./HarmonyExports");
21
- const HarmonyImportBareSideEffectDependency = require("./HarmonyImportBareSideEffectDependency");
12
+ getImportAttributes,
13
+ isVariableInfo
14
+ } = require("../../javascript/JavascriptParser");
15
+ const { getInnerGraphUtils } = require("../../optimize/InnerGraph");
16
+ const ConstDependency = require("../core/ConstDependency");
17
+ const {
18
+ ImportPhaseUtils,
19
+ createGetImportPhase
20
+ } = require("../core/ImportPhase");
21
+ const ESMAcceptDependency = require("./ESMAcceptDependency");
22
+ const ESMAcceptImportDependency = require("./ESMAcceptImportDependency");
23
+ const ESMEvaluatedImportSpecifierDependency = require("./ESMEvaluatedImportSpecifierDependency");
24
+ const ESMExports = require("./ESMExports");
25
+ const ESMImportBareSideEffectDependency = require("./ESMImportBareSideEffectDependency");
22
26
  const {
23
27
  ExportPresenceModes,
24
28
  getNonOptionalPart
25
- } = require("./HarmonyImportDependency");
29
+ } = require("./ESMImportDependency");
26
30
  const {
27
31
  attachDependencyGuards,
28
32
  isPresentByGuards
29
- } = require("./HarmonyImportGuard");
30
- const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
31
- const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
32
- const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
33
+ } = require("./ESMImportGuard");
34
+ const ESMImportSideEffectDependency = require("./ESMImportSideEffectDependency");
35
+ const ESMImportSpecifierDependency = require("./ESMImportSpecifierDependency");
33
36
 
34
37
  /**
35
38
  * @import {
@@ -44,22 +47,23 @@ const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
44
47
  /**
45
48
  * @import {
46
49
  * JavascriptParserOptions
47
- * } from "../../declarations/WebpackOptions"
50
+ * } from "../../../declarations/WebpackOptions"
48
51
  */
49
- /** @import Module from "../Module" */
50
- /** @import { JavascriptModuleBuildInfo } from "../javascript/JavascriptModule" */
52
+ /** @import Module from "../../module/Module" */
53
+ /** @import { JavascriptModuleBuildInfo } from "../../javascript/JavascriptModule" */
51
54
  /**
52
55
  * @import JavascriptParser, {
53
56
  * ImportAttributes,
54
57
  * Range,
55
58
  * Members,
56
59
  * WriteStatement
57
- * } from "../javascript/JavascriptParser"
60
+ * } from "../../javascript/JavascriptParser"
58
61
  */
59
- /** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
60
- /** @import { ImportPhaseType } from "./ImportPhase" */
61
- /** @import { GuardFrame } from "./HarmonyImportGuard" */
62
+ /** @import { Ids, ExportPresenceMode } from "./ESMImportDependency" */
63
+ /** @import { ImportPhaseType } from "../core/ImportPhase" */
64
+ /** @import { GuardFrame } from "./ESMImportGuard" */
62
65
 
66
+ // TODO in the next major release: rename to `esmSpecifierTag`
63
67
  const harmonySpecifierTag = Symbol("harmony import");
64
68
 
65
69
  // Shared placeholder: plain specifier references have no member ranges, so they
@@ -69,7 +73,7 @@ const EMPTY_ID_RANGES = [];
69
73
 
70
74
  /**
71
75
  * Defines the harmony settings type used by this module.
72
- * @typedef {object} HarmonySettings
76
+ * @typedef {object} ESMSettings
73
77
  * @property {Ids} ids
74
78
  * @property {string} source
75
79
  * @property {number} sourceOrder
@@ -78,15 +82,15 @@ const EMPTY_ID_RANGES = [];
78
82
  * @property {ImportAttributes=} attributes
79
83
  * @property {ImportPhaseType} phase
80
84
  * @property {boolean} used whether the binding is referenced anywhere
81
- * @property {HarmonyImportSideEffectDependency | undefined} dependency the statement's own dependency
85
+ * @property {ESMImportSideEffectDependency | undefined} dependency the statement's own dependency
82
86
  */
83
87
 
84
- const PLUGIN_NAME = "HarmonyImportDependencyParserPlugin";
88
+ const PLUGIN_NAME = "ESMImportDependencyParserPlugin";
85
89
 
86
90
  /**
87
91
  * Records that an import binding is referenced, so it is not reported as an
88
92
  * unused specifier naming a missing export.
89
- * @param {HarmonySettings | undefined} settings settings of the referenced tag
93
+ * @param {ESMSettings | undefined} settings settings of the referenced tag
90
94
  * @returns {boolean} true when the reference was a harmony import specifier
91
95
  */
92
96
  const markUsed = (settings) => {
@@ -100,7 +104,7 @@ const markUsed = (settings) => {
100
104
  * @param {JavascriptParser} parser the parser
101
105
  * @param {PrivateIdentifier | Expression} left left expression
102
106
  * @param {Expression} right right expression
103
- * @returns {{ leftPart: string, members: Members, settings: HarmonySettings } | undefined} info
107
+ * @returns {{ leftPart: string, members: Members, settings: ESMSettings } | undefined} info
104
108
  */
105
109
  const getInOperatorHarmonyImportInfo = (parser, left, right) => {
106
110
  const leftPartEvaluated = parser.evaluateExpression(left);
@@ -116,12 +120,12 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
116
120
  const root =
117
121
  typeof rootInfo === "string"
118
122
  ? rootInfo
119
- : rootInfo instanceof VariableInfo
123
+ : isVariableInfo(rootInfo)
120
124
  ? rootInfo.name
121
125
  : undefined;
122
126
  if (!root) return;
123
127
 
124
- const settings = /** @type {HarmonySettings | undefined} */ (
128
+ const settings = /** @type {ESMSettings | undefined} */ (
125
129
  parser.getTagData(root, harmonySpecifierTag)
126
130
  );
127
131
  if (!settings) {
@@ -147,7 +151,7 @@ const findImportSpecifier = (parser, node) => {
147
151
  switch (node.type) {
148
152
  case "Identifier":
149
153
  return markUsed(
150
- /** @type {HarmonySettings | undefined} */
154
+ /** @type {ESMSettings | undefined} */
151
155
  (parser.getTagData(node.name, harmonySpecifierTag))
152
156
  );
153
157
  case "UnaryExpression":
@@ -176,9 +180,9 @@ const findImportSpecifier = (parser, node) => {
176
180
  }
177
181
  };
178
182
 
179
- class HarmonyImportDependencyParserPlugin {
183
+ class ESMImportDependencyParserPlugin {
180
184
  /**
181
- * Creates an instance of HarmonyImportDependencyParserPlugin.
185
+ * Creates an instance of ESMImportDependencyParserPlugin.
182
186
  * @param {JavascriptParserOptions} options options
183
187
  */
184
188
  constructor(options) {
@@ -196,7 +200,7 @@ class HarmonyImportDependencyParserPlugin {
196
200
  /**
197
201
  * Gets export presence mode.
198
202
  * @param {JavascriptParser} parser the parser
199
- * @param {HarmonySettings} settings settings
203
+ * @param {ESMSettings} settings settings
200
204
  * @param {Ids} ids ids
201
205
  * @returns {ExportPresenceMode} exportPresenceMode
202
206
  */
@@ -204,9 +208,7 @@ class HarmonyImportDependencyParserPlugin {
204
208
  // Guards only apply to namespace imports
205
209
  if (settings.ids.length) return this.exportPresenceMode;
206
210
 
207
- const harmonySettings = /** @type {HarmonySettings=} */ (
208
- parser.currentTagData
209
- );
211
+ const harmonySettings = /** @type {ESMSettings=} */ (parser.currentTagData);
210
212
  if (!harmonySettings) return this.exportPresenceMode;
211
213
 
212
214
  if (this.exportPresenceMode === ExportPresenceModes.NONE) {
@@ -238,9 +240,9 @@ class HarmonyImportDependencyParserPlugin {
238
240
  );
239
241
 
240
242
  // Parsers are reused across modules, so all three are reset per program.
241
- /** @type {HarmonySettings[]} */
243
+ /** @type {ESMSettings[]} */
242
244
  const declaredSpecifiers = [];
243
- /** @type {HarmonyImportSideEffectDependency | undefined} */
245
+ /** @type {ESMImportSideEffectDependency | undefined} */
244
246
  let lastSideEffectDependency;
245
247
  /** @type {Identifier | MemberExpression | undefined} */
246
248
  let assignmentTarget;
@@ -253,7 +255,18 @@ class HarmonyImportDependencyParserPlugin {
253
255
  parser.hooks.finish.tap(PLUGIN_NAME, () => {
254
256
  for (const settings of declaredSpecifiers) {
255
257
  const dependency = settings.dependency;
256
- if (dependency === undefined || settings.used) continue;
258
+ if (dependency === undefined) continue;
259
+ // A namespace import names no export, so no reference site answers for
260
+ // it. Recorded whatever the devtool is: a module the cache restores is
261
+ // never parsed again, and the option reading it is chosen afterwards.
262
+ if (settings.ids.length === 0) {
263
+ if (dependency.namespaceSpecifiers === undefined) {
264
+ dependency.namespaceSpecifiers = [];
265
+ }
266
+ dependency.namespaceSpecifiers.push(settings.name);
267
+ continue;
268
+ }
269
+ if (settings.used) continue;
257
270
  if (dependency.unusedSpecifiers === undefined) {
258
271
  dependency.unusedSpecifiers = {
259
272
  exportPresenceMode: this.exportPresenceMode,
@@ -286,7 +299,7 @@ class HarmonyImportDependencyParserPlugin {
286
299
  if (
287
300
  parser.isVariableDefined(expr.name) ||
288
301
  markUsed(
289
- /** @type {HarmonySettings | undefined} */
302
+ /** @type {ESMSettings | undefined} */
290
303
  (parser.getTagData(expr.name, harmonySpecifierTag))
291
304
  )
292
305
  ) {
@@ -294,8 +307,8 @@ class HarmonyImportDependencyParserPlugin {
294
307
  }
295
308
  });
296
309
  parser.hooks.import.tap(PLUGIN_NAME, (statement, source) => {
297
- parser.state.lastHarmonyImportOrder =
298
- (parser.state.lastHarmonyImportOrder || 0) + 1;
310
+ parser.state.lastESMImportOrder =
311
+ (parser.state.lastESMImportOrder || 0) + 1;
299
312
  const clearDep = new ConstDependency(
300
313
  parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
301
314
  ? ";"
@@ -323,11 +336,11 @@ class HarmonyImportDependencyParserPlugin {
323
336
  // which for a module emitting its own file is that file.
324
337
  const SideEffectDependency =
325
338
  statement.specifiers.length === 0
326
- ? HarmonyImportBareSideEffectDependency
327
- : HarmonyImportSideEffectDependency;
339
+ ? ESMImportBareSideEffectDependency
340
+ : ESMImportSideEffectDependency;
328
341
  const sideEffectDep = new SideEffectDependency(
329
342
  /** @type {string} */ (source),
330
- parser.state.lastHarmonyImportOrder,
343
+ parser.state.lastESMImportOrder,
331
344
  phase,
332
345
  attributes
333
346
  );
@@ -341,20 +354,18 @@ class HarmonyImportDependencyParserPlugin {
341
354
  (statement, source, id, name) => {
342
355
  const ids = id === null ? [] : [id];
343
356
  const phase = getImportPhase(parser, statement);
344
- const settings = /** @type {HarmonySettings} */ ({
357
+ const settings = /** @type {ESMSettings} */ ({
345
358
  name,
346
359
  source,
347
360
  ids,
348
- sourceOrder: parser.state.lastHarmonyImportOrder,
361
+ sourceOrder: parser.state.lastESMImportOrder,
349
362
  attributes: getImportAttributes(statement),
350
363
  phase,
351
364
  used: false,
352
365
  dependency: lastSideEffectDependency
353
366
  });
354
367
  parser.tagVariable(name, harmonySpecifierTag, settings);
355
- // The statement's dependency carries them, so a never-referenced
356
- // one still resolves; a namespace import names no export.
357
- if (ids.length !== 0) declaredSpecifiers.push(settings);
368
+ declaredSpecifiers.push(settings);
358
369
  return true;
359
370
  }
360
371
  );
@@ -368,7 +379,7 @@ class HarmonyImportDependencyParserPlugin {
368
379
  if (!info) return;
369
380
 
370
381
  const { leftPart, members, settings } = info;
371
- const dep = new HarmonyEvaluatedImportSpecifierDependency(
382
+ const dep = new ESMEvaluatedImportSpecifierDependency(
372
383
  settings.source,
373
384
  settings.sourceOrder,
374
385
  [...settings.ids, ...members, leftPart],
@@ -395,10 +406,10 @@ class HarmonyImportDependencyParserPlugin {
395
406
  const nameInfo = parser.getNameForExpression(expr);
396
407
  if (
397
408
  nameInfo &&
398
- nameInfo.rootInfo instanceof VariableInfo &&
409
+ isVariableInfo(nameInfo.rootInfo) &&
399
410
  nameInfo.rootInfo.name &&
400
411
  markUsed(
401
- /** @type {HarmonySettings | undefined} */
412
+ /** @type {ESMSettings | undefined} */
402
413
  (parser.getTagData(nameInfo.rootInfo.name, harmonySpecifierTag))
403
414
  )
404
415
  ) {
@@ -420,7 +431,7 @@ class HarmonyImportDependencyParserPlugin {
420
431
  /**
421
432
  * Whether a member write lands on the namespace object itself, which is
422
433
  * read-only. A property of an imported object is an ordinary write.
423
- * @param {HarmonySettings} settings the specifier's settings
434
+ * @param {ESMSettings} settings the specifier's settings
424
435
  * @param {Members} members the member chain
425
436
  * @returns {boolean} true when the write targets a namespace member
426
437
  */
@@ -446,7 +457,7 @@ class HarmonyImportDependencyParserPlugin {
446
457
  * @returns {void}
447
458
  */
448
459
  const markImportedBindingWrite = (expr, target) => {
449
- const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
460
+ const settings = /** @type {ESMSettings} */ (parser.currentTagData);
450
461
  markUsed(settings);
451
462
  // A named import is written through the namespace's getter-only
452
463
  // property, which throws on its own. A namespace one is the binding
@@ -488,7 +499,7 @@ class HarmonyImportDependencyParserPlugin {
488
499
  parser.hooks.writeMemberChain
489
500
  .for(harmonySpecifierTag)
490
501
  .tap(PLUGIN_NAME, (node, members) => {
491
- const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
502
+ const settings = /** @type {ESMSettings} */ (parser.currentTagData);
492
503
  if (!isNamespaceMemberWrite(settings, members)) return;
493
504
  const written = writeTargetOf(node);
494
505
  if (written.type === "MemberExpression") {
@@ -500,10 +511,10 @@ class HarmonyImportDependencyParserPlugin {
500
511
  parser.hooks.expression
501
512
  .for(harmonySpecifierTag)
502
513
  .tap(PLUGIN_NAME, (expr) => {
503
- const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
514
+ const settings = /** @type {ESMSettings} */ (parser.currentTagData);
504
515
  settings.used = true;
505
516
 
506
- const dep = new HarmonyImportSpecifierDependency(
517
+ const dep = new ESMImportSpecifierDependency(
507
518
  settings.source,
508
519
  settings.sourceOrder,
509
520
  settings.ids,
@@ -542,18 +553,21 @@ class HarmonyImportDependencyParserPlugin {
542
553
  PLUGIN_NAME,
543
554
  (expression, members, membersOptionals, memberRanges) => {
544
555
  const settings =
545
- /** @type {HarmonySettings} */
556
+ /** @type {ESMSettings} */
546
557
  (parser.currentTagData);
547
558
  settings.used = true;
548
559
  const nonOptionalMembers = getNonOptionalPart(
549
560
  members,
550
561
  membersOptionals
551
562
  );
563
+ const rangeCount =
564
+ memberRanges.length - (members.length - nonOptionalMembers.length);
565
+ // Nothing left to record is the common case, so share one array.
552
566
  /** @type {Range[]} */
553
- const ranges = memberRanges.slice(
554
- 0,
555
- memberRanges.length - (members.length - nonOptionalMembers.length)
556
- );
567
+ const ranges =
568
+ rangeCount > 0
569
+ ? memberRanges.slice(0, rangeCount)
570
+ : EMPTY_ID_RANGES;
557
571
  const expr =
558
572
  nonOptionalMembers !== members
559
573
  ? getNonOptionalMemberChain(
@@ -562,7 +576,7 @@ class HarmonyImportDependencyParserPlugin {
562
576
  )
563
577
  : expression;
564
578
  const ids = [...settings.ids, ...nonOptionalMembers];
565
- const dep = new HarmonyImportSpecifierDependency(
579
+ const dep = new ESMImportSpecifierDependency(
566
580
  settings.source,
567
581
  settings.sourceOrder,
568
582
  ids,
@@ -601,19 +615,20 @@ class HarmonyImportDependencyParserPlugin {
601
615
  (expression, members, membersOptionals, memberRanges) => {
602
616
  const { arguments: args } = expression;
603
617
  const callee = /** @type {MemberExpression} */ (expression.callee);
604
- const settings = /** @type {HarmonySettings} */ (
605
- parser.currentTagData
606
- );
618
+ const settings = /** @type {ESMSettings} */ (parser.currentTagData);
607
619
  settings.used = true;
608
620
  const nonOptionalMembers = getNonOptionalPart(
609
621
  members,
610
622
  membersOptionals
611
623
  );
624
+ const rangeCount =
625
+ memberRanges.length - (members.length - nonOptionalMembers.length);
626
+ // Nothing left to record is the common case, so share one array.
612
627
  /** @type {Range[]} */
613
- const ranges = memberRanges.slice(
614
- 0,
615
- memberRanges.length - (members.length - nonOptionalMembers.length)
616
- );
628
+ const ranges =
629
+ rangeCount > 0
630
+ ? memberRanges.slice(0, rangeCount)
631
+ : EMPTY_ID_RANGES;
617
632
  const expr =
618
633
  nonOptionalMembers !== members
619
634
  ? getNonOptionalMemberChain(
@@ -622,7 +637,7 @@ class HarmonyImportDependencyParserPlugin {
622
637
  )
623
638
  : callee;
624
639
  const ids = [...settings.ids, ...nonOptionalMembers];
625
- const dep = new HarmonyImportSpecifierDependency(
640
+ const dep = new ESMImportSpecifierDependency(
626
641
  settings.source,
627
642
  settings.sourceOrder,
628
643
  ids,
@@ -659,7 +674,7 @@ class HarmonyImportDependencyParserPlugin {
659
674
  parser.hooks.assignMemberChain
660
675
  .for(harmonySpecifierTag)
661
676
  .tap(PLUGIN_NAME, (expression, members) => {
662
- const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
677
+ const settings = /** @type {ESMSettings} */ (parser.currentTagData);
663
678
  settings.used = true;
664
679
  if (isNamespaceMemberWrite(settings, members)) {
665
680
  assignmentTarget = /** @type {MemberExpression} */ (expression.left);
@@ -676,18 +691,18 @@ class HarmonyImportDependencyParserPlugin {
676
691
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
677
692
  getParserHooks(parser);
678
693
  hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
679
- if (!HarmonyExports.isEnabled(parser.state)) {
694
+ if (!ESMExports.isEnabled(parser.state)) {
680
695
  // This is not a harmony module, skip it
681
696
  return;
682
697
  }
683
698
  const dependencies = requests.map((request) => {
684
- const dep = new HarmonyAcceptImportDependency(request);
699
+ const dep = new ESMAcceptImportDependency(request);
685
700
  dep.loc = parser.getLocation(expr);
686
701
  parser.state.module.addDependency(dep);
687
702
  return dep;
688
703
  });
689
704
  if (dependencies.length > 0) {
690
- const dep = new HarmonyAcceptDependency(
705
+ const dep = new ESMAcceptDependency(
691
706
  /** @type {Range} */
692
707
  (expr.range),
693
708
  dependencies,
@@ -698,18 +713,18 @@ class HarmonyImportDependencyParserPlugin {
698
713
  }
699
714
  });
700
715
  hotAcceptWithoutCallback.tap(PLUGIN_NAME, (expr, requests) => {
701
- if (!HarmonyExports.isEnabled(parser.state)) {
716
+ if (!ESMExports.isEnabled(parser.state)) {
702
717
  // This is not a harmony module, skip it
703
718
  return;
704
719
  }
705
720
  const dependencies = requests.map((request) => {
706
- const dep = new HarmonyAcceptImportDependency(request);
721
+ const dep = new ESMAcceptImportDependency(request);
707
722
  dep.loc = parser.getLocation(expr);
708
723
  parser.state.module.addDependency(dep);
709
724
  return dep;
710
725
  });
711
726
  if (dependencies.length > 0) {
712
- const dep = new HarmonyAcceptDependency(
727
+ const dep = new ESMAcceptDependency(
713
728
  /** @type {Range} */
714
729
  (expr.range),
715
730
  dependencies,
@@ -747,6 +762,6 @@ class HarmonyImportDependencyParserPlugin {
747
762
  }
748
763
  }
749
764
 
750
- HarmonyImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
765
+ ESMImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
751
766
 
752
- module.exports = HarmonyImportDependencyParserPlugin;
767
+ module.exports = ESMImportDependencyParserPlugin;
@@ -5,31 +5,32 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { InlinedUsedName } = require("../optimize/InlineExports");
8
+ const isDependencyKind = require("../../graph/isDependencyKind");
9
+ const { isInlinedUsedName } = require("../../optimize/InlineExports");
9
10
 
10
11
  /** @import { Expression } from "estree" */
11
- /** @import Dependency from "../Dependency" */
12
- /** @import Module from "../Module" */
13
- /** @import ModuleGraph from "../ModuleGraph" */
14
- /** @import JavascriptParser from "../javascript/JavascriptParser" */
15
- /** @import { RuntimeSpec } from "../util/runtime" */
16
- /** @import CommonJsFullRequireDependency from "./CommonJsFullRequireDependency" */
17
- /** @import CommonJsRequireDependency from "./CommonJsRequireDependency" */
18
- /** @import HarmonyEvaluatedImportSpecifierDependency from "./HarmonyEvaluatedImportSpecifierDependency" */
19
- /** @import HarmonyImportSpecifierDependency from "./HarmonyImportSpecifierDependency" */
20
- /** @import ImportDependency from "./ImportDependency" */
12
+ /** @import Dependency from "../../graph/Dependency" */
13
+ /** @import Module from "../../module/Module" */
14
+ /** @import ModuleGraph from "../../graph/ModuleGraph" */
15
+ /** @import JavascriptParser from "../../javascript/JavascriptParser" */
16
+ /** @import { RuntimeSpec } from "../../util/runtime" */
17
+ /** @import CommonJsFullRequireDependency from "../commonjs/CommonJsFullRequireDependency" */
18
+ /** @import CommonJsRequireDependency from "../commonjs/CommonJsRequireDependency" */
19
+ /** @import ESMEvaluatedImportSpecifierDependency from "./ESMEvaluatedImportSpecifierDependency" */
20
+ /** @import ESMImportSpecifierDependency from "./ESMImportSpecifierDependency" */
21
+ /** @import ImportDependency from "../import/ImportDependency" */
21
22
 
22
23
  // Tuple-encoded boolean formula over guard dependencies. Split into per-shape
23
24
  // aliases so the recursive references resolve through array/object types.
24
25
  // `v` = dependency-liveness atom, `p` = `"x" in ns` presence atom.
25
26
  /** @typedef {["v", Dependency]} GuardAtom */
26
- /** @typedef {["p", HarmonyEvaluatedImportSpecifierDependency]} GuardPresenceAtom */
27
+ /** @typedef {["p", ESMEvaluatedImportSpecifierDependency]} GuardPresenceAtom */
27
28
  /** @typedef {["?"]} GuardUnknown */
28
29
  /** @typedef {["!", GuardFormula]} GuardNot */
29
30
  /** @typedef {["&&" | "||" | "??", GuardFormula, GuardFormula]} GuardLogical */
30
31
  /** @typedef {GuardAtom | GuardPresenceAtom | GuardUnknown | GuardNot | GuardLogical} GuardFormula */
31
32
  /** @typedef {{ formula: GuardFormula, value: boolean }} DependencyGuard branch guard: the dependency is live only when the formula evaluates to `value` */
32
- /** @typedef {HarmonyImportSpecifierDependency | CommonJsRequireDependency | CommonJsFullRequireDependency | ImportDependency} GuardableDependency */
33
+ /** @typedef {ESMImportSpecifierDependency | CommonJsRequireDependency | CommonJsFullRequireDependency | ImportDependency} GuardableDependency */
33
34
 
34
35
  /**
35
36
  * A guard frame pushed onto `parser.state.guardStack` for the duration of one
@@ -63,7 +64,7 @@ const fromBool = (b) => (b ? TRUE : FALSE);
63
64
  /**
64
65
  * Build a liveness formula from a conditional test AST.
65
66
  * @param {Expression} test conditional test expression
66
- * @param {Map<number, HarmonyImportSpecifierDependency>} depByRangeStart import-specifier deps in the test, keyed by range start
67
+ * @param {Map<number, ESMImportSpecifierDependency>} depByRangeStart import-specifier deps in the test, keyed by range start
67
68
  * @returns {GuardFormula | null} formula, or null when it has no knowable atom
68
69
  */
69
70
  const buildLivenessFormula = (test, depByRangeStart) => {
@@ -125,14 +126,14 @@ const hasAtom = (formula) => {
125
126
  const evalLivenessFormula = (formula, moduleGraph, runtime) => {
126
127
  switch (formula[0]) {
127
128
  case "v": {
128
- const dep = /** @type {HarmonyImportSpecifierDependency} */ (formula[1]);
129
+ const dep = /** @type {ESMImportSpecifierDependency} */ (formula[1]);
129
130
  const module = moduleGraph.getModule(dep);
130
131
  if (!module) return { t: UNKNOWN, n: UNKNOWN };
131
132
  const used = moduleGraph
132
133
  .getExportsInfo(module)
133
134
  .getUsedName(dep.getIds(moduleGraph), runtime);
134
135
  // Only a bare inlined primitive is knowable; a property suffix is not.
135
- if (!(used instanceof InlinedUsedName) || used.suffix.length !== 0) {
136
+ if (!isInlinedUsedName(used) || used.suffix.length !== 0) {
136
137
  return { t: UNKNOWN, n: UNKNOWN };
137
138
  }
138
139
  const value = used.value;
@@ -207,16 +208,14 @@ const isDeadByGuards = (guards, moduleGraph, runtime) => {
207
208
  */
208
209
  const buildFrameLivenessFormula = (parser, frame) => {
209
210
  const deps = /** @type {Module} */ (parser.state.module).dependencies;
210
- /** @type {Map<number, HarmonyImportSpecifierDependency>} */
211
+ /** @type {Map<number, ESMImportSpecifierDependency>} */
211
212
  const depByRangeStart = new Map();
212
213
  for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
213
- const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
214
- deps[i]
215
- );
214
+ const dep = deps[i];
216
215
  // Exclude `"x" in ns` evaluated deps; those feed the presence formula only.
217
216
  if (
218
- dep.isHarmonyImportSpecifier === true &&
219
- dep.isHarmonyEvaluatedImportSpecifier !== true &&
217
+ isDependencyKind(dep, "esm-import-specifier") &&
218
+ !dep.is("esm-evaluated-import-specifier") &&
220
219
  dep.range
221
220
  ) {
222
221
  depByRangeStart.set(dep.range[0], dep);
@@ -234,7 +233,7 @@ const buildFrameLivenessFormula = (parser, frame) => {
234
233
  * `"x" in ns` presence atoms (plus `&&`/`!`).
235
234
  * @param {JavascriptParser} parser the parser
236
235
  * @param {Expression} test conditional test expression
237
- * @param {Map<number, HarmonyEvaluatedImportSpecifierDependency>} depByRangeStart in-operator deps in the test, keyed by range start
236
+ * @param {Map<number, ESMEvaluatedImportSpecifierDependency>} depByRangeStart in-operator deps in the test, keyed by range start
238
237
  * @returns {GuardFormula | null} formula, or null when it has no presence atom
239
238
  */
240
239
  const buildPresenceFormula = (parser, test, depByRangeStart) => {
@@ -299,7 +298,7 @@ const buildPresenceFormula = (parser, test, depByRangeStart) => {
299
298
  const evalPresenceFormula = (formula, name, member, needTruthy) => {
300
299
  switch (formula[0]) {
301
300
  case "p": {
302
- const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
301
+ const dep = /** @type {ESMEvaluatedImportSpecifierDependency} */ (
303
302
  formula[1]
304
303
  );
305
304
  return (
@@ -332,13 +331,11 @@ const evalPresenceFormula = (formula, name, member, needTruthy) => {
332
331
  */
333
332
  const buildFramePresenceFormula = (parser, frame) => {
334
333
  const deps = /** @type {Module} */ (parser.state.module).dependencies;
335
- /** @type {Map<number, HarmonyEvaluatedImportSpecifierDependency>} */
334
+ /** @type {Map<number, ESMEvaluatedImportSpecifierDependency>} */
336
335
  const depByRangeStart = new Map();
337
336
  for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
338
- const dep = /** @type {HarmonyEvaluatedImportSpecifierDependency} */ (
339
- deps[i]
340
- );
341
- if (dep.isHarmonyEvaluatedImportSpecifier === true && dep.range) {
337
+ const dep = deps[i];
338
+ if (isDependencyKind(dep, "esm-evaluated-import-specifier") && dep.range) {
342
339
  depByRangeStart.set(dep.range[0], dep);
343
340
  }
344
341
  }