@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
@@ -5,15 +5,16 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CommentCompilationWarning = require("../CommentCompilationWarning");
9
8
  const RuntimeGlobals = require("../RuntimeGlobals");
10
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
9
+ const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
10
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
11
11
  const {
12
12
  evaluateToIdentifier,
13
13
  evaluateToString,
14
14
  expressionIsUnsupported,
15
15
  toConstantDependency
16
16
  } = require("../javascript/JavascriptParserHelpers");
17
+ const memoize = require("../util/memoize");
17
18
  const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
18
19
  const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
19
20
  const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
@@ -42,14 +43,31 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
42
43
  /** @typedef {import("./LocalModule")} LocalModule */
43
44
 
44
45
  /**
46
+ * Defines the common js import settings type used by this module.
45
47
  * @typedef {object} CommonJsImportSettings
46
48
  * @property {string=} name
47
49
  * @property {string} context
48
50
  */
49
51
 
52
+ /**
53
+ * Per-`const NAME = require(LITERAL)` binding state used to forward
54
+ * member-access references on `NAME` to the `CommonJsRequireDependency`
55
+ * created for the `require()` call.
56
+ * @typedef {object} RequireBindingData
57
+ * @property {RawReferencedExports | null} referencedExports mutable list, pushed to as `NAME.x.y` accesses are walked; null means the whole namespace is used. Separate from `dep` so a deferred require (walked after accesses on `NAME`) still collects them; becomes the dep's shared list on creation.
58
+ * @property {InstanceType<typeof import("./CommonJsRequireDependency")> | null} dep dependency for the `require()` call, null until the `require()` is walked; kept so a later whole-namespace use can null its list directly
59
+ */
60
+
61
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
62
+
63
+ const REQUIRE_BINDING_TAG = Symbol(
64
+ "CommonJsImportsParserPlugin require binding"
65
+ );
66
+
50
67
  const PLUGIN_NAME = "CommonJsImportsParserPlugin";
51
68
 
52
69
  /**
70
+ * Checks whether this object is require call expression.
53
71
  * @param {Expression} expression expression
54
72
  * @returns {boolean} true, when expression is `require(...)` or `module.require(...)`
55
73
  */
@@ -73,6 +91,7 @@ const isRequireCallExpression = (expression) => {
73
91
  };
74
92
 
75
93
  /**
94
+ * Gets require referenced exports from destructuring.
76
95
  * @param {JavascriptParser} parser parser
77
96
  * @param {CallExpression | NewExpression} expr expression
78
97
  * @returns {RawReferencedExports | null} referenced exports from destructuring
@@ -92,6 +111,7 @@ const getRequireReferencedExportsFromDestructuring = (parser, expr) => {
92
111
  };
93
112
 
94
113
  /**
114
+ * Creates a require cache dependency.
95
115
  * @param {JavascriptParser} parser parser
96
116
  * @returns {(expr: Expression) => boolean} handler
97
117
  */
@@ -103,6 +123,7 @@ const createRequireCacheDependency = (parser) =>
103
123
  ]);
104
124
 
105
125
  /**
126
+ * Creates a require as expression handler.
106
127
  * @param {JavascriptParser} parser parser
107
128
  * @param {JavascriptParserOptions} options options
108
129
  * @param {() => undefined | string} getContext context accessor
@@ -125,43 +146,63 @@ const createRequireAsExpressionHandler =
125
146
  dep.critical =
126
147
  options.unknownContextCritical &&
127
148
  "require function is used in a way in which dependencies cannot be statically extracted";
128
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
149
+ dep.loc = parser.getLocation(expr);
129
150
  dep.optional = Boolean(parser.scope.inTry);
130
151
  parser.state.current.addDependency(dep);
131
152
  return true;
132
153
  };
133
154
 
134
155
  /**
156
+ * Creates a require call handler.
135
157
  * @param {JavascriptParser} parser parser
136
158
  * @param {JavascriptParserOptions} options options
137
159
  * @param {() => undefined | string} getContext context accessor
160
+ * @param {WeakMap<CallExpression, RequireBindingData>=} requireBindingData per-parser `const NAME = require(LITERAL)` binding state; only the free-`require` plugin populates it
138
161
  * @returns {(callNew: boolean) => (expr: CallExpression | NewExpression) => (boolean | void)} handler factory
139
162
  */
140
- const createRequireCallHandler = (parser, options, getContext) => {
163
+ const createRequireCallHandler = (
164
+ parser,
165
+ options,
166
+ getContext,
167
+ requireBindingData
168
+ ) => {
141
169
  /**
170
+ * Process require item.
142
171
  * @param {CallExpression | NewExpression} expr expression
143
172
  * @param {BasicEvaluatedExpression} param param
144
173
  * @returns {boolean | void} true when handled
145
174
  */
146
175
  const processRequireItem = (expr, param) => {
147
176
  if (param.isString()) {
148
- const referencedExports = getRequireReferencedExportsFromDestructuring(
177
+ let referencedExports = getRequireReferencedExportsFromDestructuring(
149
178
  parser,
150
179
  expr
151
180
  );
181
+ const binding =
182
+ requireBindingData &&
183
+ requireBindingData.get(/** @type {CallExpression} */ (expr));
184
+ if (binding && !referencedExports) {
185
+ // `const NAME = require(LITERAL)` — let later member-access walks
186
+ // on `NAME` populate the dependency's referenced exports.
187
+ referencedExports = binding.referencedExports;
188
+ }
152
189
  const dep = new CommonJsRequireDependency(
153
190
  /** @type {string} */ (param.string),
154
191
  /** @type {Range} */ (param.range),
155
192
  getContext(),
156
- referencedExports
193
+ referencedExports,
194
+ /** @type {Range} */ (expr.range)
157
195
  );
158
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
196
+ if (binding) binding.dep = dep;
197
+ dep.loc = parser.getLocation(expr);
159
198
  dep.optional = Boolean(parser.scope.inTry);
160
199
  parser.state.current.addDependency(dep);
200
+ getHarmonyImportGuard().attachDependencyGuards(parser, dep);
161
201
  return true;
162
202
  }
163
203
  };
164
204
  /**
205
+ * Process require context.
165
206
  * @param {CallExpression | NewExpression} expr expression
166
207
  * @param {BasicEvaluatedExpression} param param
167
208
  * @returns {boolean | void} true when handled
@@ -186,7 +227,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
186
227
  getContext()
187
228
  );
188
229
  if (!dep) return;
189
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
230
+ dep.loc = parser.getLocation(expr);
190
231
  dep.optional = Boolean(parser.scope.inTry);
191
232
  parser.state.current.addDependency(dep);
192
233
  return true;
@@ -203,7 +244,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
203
244
  parser.state.module.addWarning(
204
245
  new CommentCompilationWarning(
205
246
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
206
- /** @type {DependencyLocation} */ (comment.loc)
247
+ parser.getLocation(comment)
207
248
  )
208
249
  );
209
250
  }
@@ -213,7 +254,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
213
254
  parser.state.module.addWarning(
214
255
  new UnsupportedFeatureWarning(
215
256
  `\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
216
- /** @type {DependencyLocation} */ (expr.loc)
257
+ parser.getLocation(expr)
217
258
  )
218
259
  );
219
260
  } else if (requireOptions.webpackIgnore) {
@@ -241,7 +282,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
241
282
  const dep = new RequireHeaderDependency(
242
283
  /** @type {Range} */ (expr.callee.range)
243
284
  );
244
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
285
+ dep.loc = parser.getLocation(expr);
245
286
  parser.state.module.addPresentationalDependency(dep);
246
287
  return true;
247
288
  }
@@ -259,7 +300,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
259
300
  /** @type {Range} */ (expr.range),
260
301
  callNew
261
302
  );
262
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
303
+ dep.loc = parser.getLocation(expr);
263
304
  parser.state.module.addPresentationalDependency(dep);
264
305
  } else {
265
306
  const result = processRequireItem(expr, param);
@@ -269,7 +310,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
269
310
  const dep = new RequireHeaderDependency(
270
311
  /** @type {Range} */ (expr.callee.range)
271
312
  );
272
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
313
+ dep.loc = parser.getLocation(expr);
273
314
  parser.state.module.addPresentationalDependency(dep);
274
315
  }
275
316
  }
@@ -278,6 +319,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
278
319
  };
279
320
 
280
321
  /**
322
+ * Creates a process resolve handler.
281
323
  * @param {JavascriptParser} parser parser
282
324
  * @param {JavascriptParserOptions} options options
283
325
  * @param {() => undefined | string} getContext context accessor
@@ -285,6 +327,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
285
327
  */
286
328
  const createProcessResolveHandler = (parser, options, getContext) => {
287
329
  /**
330
+ * Process resolve item.
288
331
  * @param {CallExpression} expr call expression
289
332
  * @param {BasicEvaluatedExpression} param param
290
333
  * @param {boolean} weak weak
@@ -297,7 +340,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
297
340
  /** @type {Range} */ (param.range),
298
341
  getContext()
299
342
  );
300
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
343
+ dep.loc = parser.getLocation(expr);
301
344
  dep.optional = Boolean(parser.scope.inTry);
302
345
  dep.weak = weak;
303
346
  parser.state.current.addDependency(dep);
@@ -305,6 +348,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
305
348
  }
306
349
  };
307
350
  /**
351
+ * Process resolve context.
308
352
  * @param {CallExpression} expr call expression
309
353
  * @param {BasicEvaluatedExpression} param param
310
354
  * @param {boolean} weak weak
@@ -325,7 +369,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
325
369
  getContext()
326
370
  );
327
371
  if (!dep) return;
328
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
372
+ dep.loc = parser.getLocation(expr);
329
373
  dep.optional = Boolean(parser.scope.inTry);
330
374
  parser.state.current.addDependency(dep);
331
375
  return true;
@@ -342,7 +386,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
342
386
  parser.state.module.addWarning(
343
387
  new CommentCompilationWarning(
344
388
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
345
- /** @type {DependencyLocation} */ (comment.loc)
389
+ parser.getLocation(comment)
346
390
  )
347
391
  );
348
392
  }
@@ -352,7 +396,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
352
396
  parser.state.module.addWarning(
353
397
  new UnsupportedFeatureWarning(
354
398
  `\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
355
- /** @type {DependencyLocation} */ (expr.loc)
399
+ parser.getLocation(expr)
356
400
  )
357
401
  );
358
402
  } else if (requireOptions.webpackIgnore) {
@@ -376,7 +420,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
376
420
  const dep = new RequireResolveHeaderDependency(
377
421
  /** @type {Range} */ (expr.callee.range)
378
422
  );
379
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
423
+ dep.loc = parser.getLocation(expr);
380
424
  parser.state.module.addPresentationalDependency(dep);
381
425
  return true;
382
426
  }
@@ -387,7 +431,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
387
431
  const dep = new RequireResolveHeaderDependency(
388
432
  /** @type {Range} */ (expr.callee.range)
389
433
  );
390
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
434
+ dep.loc = parser.getLocation(expr);
391
435
  parser.state.module.addPresentationalDependency(dep);
392
436
  return true;
393
437
  };
@@ -395,13 +439,16 @@ const createProcessResolveHandler = (parser, options, getContext) => {
395
439
 
396
440
  class CommonJsImportsParserPlugin {
397
441
  /**
442
+ * Creates an instance of CommonJsImportsParserPlugin.
398
443
  * @param {JavascriptParserOptions} options parser options
399
444
  */
400
445
  constructor(options) {
446
+ /** @type {JavascriptParserOptions} */
401
447
  this.options = options;
402
448
  }
403
449
 
404
450
  /**
451
+ * Applies the plugin by registering its hooks on the compiler.
405
452
  * @param {JavascriptParser} parser the parser
406
453
  * @returns {void}
407
454
  */
@@ -425,6 +472,7 @@ class CommonJsImportsParserPlugin {
425
472
 
426
473
  // #region metadata
427
474
  /**
475
+ * Tap require expression.
428
476
  * @param {string} expression expression
429
477
  * @param {() => Members} getMembers get members
430
478
  */
@@ -454,7 +502,7 @@ class CommonJsImportsParserPlugin {
454
502
  parser.hooks.assign.for("require").tap(PLUGIN_NAME, (expr) => {
455
503
  // to not leak to global "require", we need to define a local require here.
456
504
  const dep = new ConstDependency("var require;", 0);
457
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
505
+ dep.loc = parser.getLocation(expr);
458
506
  parser.state.module.addPresentationalDependency(dep);
459
507
  return true;
460
508
  });
@@ -491,6 +539,7 @@ class CommonJsImportsParserPlugin {
491
539
 
492
540
  // #region Renaming
493
541
  /**
542
+ * Returns true when set undefined.
494
543
  * @param {Expression} expr expression
495
544
  * @returns {boolean} true when set undefined
496
545
  */
@@ -500,7 +549,7 @@ class CommonJsImportsParserPlugin {
500
549
  "undefined",
501
550
  /** @type {Range} */ (expr.range)
502
551
  );
503
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
552
+ dep.loc = parser.getLocation(expr);
504
553
  parser.state.module.addPresentationalDependency(dep);
505
554
  return false;
506
555
  };
@@ -516,6 +565,7 @@ class CommonJsImportsParserPlugin {
516
565
 
517
566
  // #region Require as expression
518
567
  /**
568
+ * Require as expression handler.
519
569
  * @param {Expression} expr expression
520
570
  * @returns {boolean} true when handled
521
571
  */
@@ -531,13 +581,17 @@ class CommonJsImportsParserPlugin {
531
581
 
532
582
  // #region Require
533
583
  /**
584
+ * Creates a require handler.
534
585
  * @param {boolean} callNew true, when require is called with new
535
586
  * @returns {(expr: CallExpression | NewExpression) => (boolean | void)} handler
536
587
  */
588
+ /** @type {WeakMap<CallExpression, RequireBindingData>} */
589
+ const requireBindingData = new WeakMap();
537
590
  const createRequireHandler = createRequireCallHandler(
538
591
  parser,
539
592
  options,
540
- getContext
593
+ getContext,
594
+ requireBindingData
541
595
  );
542
596
  parser.hooks.call
543
597
  .for("require")
@@ -555,6 +609,7 @@ class CommonJsImportsParserPlugin {
555
609
 
556
610
  // #region Require with property access
557
611
  /**
612
+ * Returns true when handled.
558
613
  * @param {Expression} expr expression
559
614
  * @param {CalleeMembers} calleeMembers callee members
560
615
  * @param {CallExpression} callExpr call expression
@@ -585,12 +640,14 @@ class CommonJsImportsParserPlugin {
585
640
  /** @type {Range} */ (expr.range)[0]
586
641
  );
587
642
  dep.optional = Boolean(parser.scope.inTry);
588
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
643
+ dep.loc = parser.getLocation(expr);
589
644
  parser.state.current.addDependency(dep);
645
+ getHarmonyImportGuard().attachDependencyGuards(parser, dep);
590
646
  return true;
591
647
  }
592
648
  };
593
649
  /**
650
+ * Call chain handler.
594
651
  * @param {CallExpression} expr expression
595
652
  * @param {CalleeMembers} calleeMembers callee members
596
653
  * @param {CallExpression} callExpr call expression
@@ -622,8 +679,9 @@ class CommonJsImportsParserPlugin {
622
679
  /** @type {Range} */ (expr.range)[0]
623
680
  );
624
681
  dep.optional = Boolean(parser.scope.inTry);
625
- dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
682
+ dep.loc = parser.getLocation(expr.callee);
626
683
  parser.state.current.addDependency(dep);
684
+ getHarmonyImportGuard().attachDependencyGuards(parser, dep);
627
685
  parser.walkExpressions(expr.arguments);
628
686
  return true;
629
687
  }
@@ -642,8 +700,115 @@ class CommonJsImportsParserPlugin {
642
700
  .tap(PLUGIN_NAME, callChainHandler);
643
701
  // #endregion
644
702
 
703
+ // #region Require bound to a const variable
704
+ // Track `const NAME = require(LITERAL)` so that static member accesses on
705
+ // `NAME` (e.g. `NAME.foo`, `NAME.foo()`) are forwarded to the same
706
+ // `CommonJsRequireDependency` as referenced exports — enabling tree
707
+ // shaking of CommonJS modules that are imported into a named binding
708
+ // rather than destructured.
709
+ parser.hooks.preDeclarator.tap(PLUGIN_NAME, (declarator, statement) => {
710
+ if (statement.kind !== "const") return;
711
+ if (declarator.id.type !== "Identifier") return;
712
+ if (!declarator.init || declarator.init.type !== "CallExpression") {
713
+ return;
714
+ }
715
+ const init = declarator.init;
716
+ if (
717
+ init.callee.type !== "Identifier" ||
718
+ init.callee.name !== "require" ||
719
+ init.arguments.length !== 1
720
+ ) {
721
+ return;
722
+ }
723
+ const arg = init.arguments[0];
724
+ if (arg.type !== "Literal" || typeof arg.value !== "string") return;
725
+ // Only attach binding state when `require` resolves to the free
726
+ // `require` (i.e. it isn't shadowed in the current scope).
727
+ const requireInfo = parser.getFreeInfoFromVariable("require");
728
+ if (!requireInfo || requireInfo.name !== "require") return;
729
+ /** @type {RequireBindingData} */
730
+ const binding = {
731
+ referencedExports: [],
732
+ dep: null
733
+ };
734
+ requireBindingData.set(init, binding);
735
+ parser.tagVariable(declarator.id.name, REQUIRE_BINDING_TAG, binding);
736
+ return true;
737
+ });
738
+
739
+ parser.hooks.expression.for(REQUIRE_BINDING_TAG).tap(PLUGIN_NAME, () => {
740
+ const binding =
741
+ /** @type {RequireBindingData} */
742
+ (parser.currentTagData);
743
+ if (binding) {
744
+ // `NAME` is read as a value (not as the object of a static member
745
+ // chain), so we have to assume the whole exports object is used.
746
+ binding.referencedExports = null;
747
+ if (binding.dep) {
748
+ binding.dep.referencedExports = null;
749
+ }
750
+ }
751
+ return true;
752
+ });
753
+
754
+ parser.hooks.expressionMemberChain
755
+ .for(REQUIRE_BINDING_TAG)
756
+ .tap(PLUGIN_NAME, (_expr, members) => {
757
+ const binding =
758
+ /** @type {RequireBindingData} */
759
+ (parser.currentTagData);
760
+ if (binding && binding.referencedExports) {
761
+ binding.referencedExports.push(members);
762
+ }
763
+ // Returning truthy suppresses the parser's fallback chain (which
764
+ // would otherwise walk `NAME` as a bare expression and trigger our
765
+ // `expression` hook above, marking the whole namespace as used).
766
+ return true;
767
+ });
768
+
769
+ parser.hooks.callMemberChain
770
+ .for(REQUIRE_BINDING_TAG)
771
+ .tap(PLUGIN_NAME, (expr, members) => {
772
+ const binding =
773
+ /** @type {RequireBindingData} */
774
+ (parser.currentTagData);
775
+ if (binding && binding.referencedExports) {
776
+ if (members.length === 0) {
777
+ // `NAME(...)` — calling the require result directly; the
778
+ // whole exports object is observable.
779
+ binding.referencedExports = null;
780
+ if (binding.dep) {
781
+ binding.dep.referencedExports = null;
782
+ }
783
+ } else {
784
+ binding.referencedExports.push(members);
785
+ }
786
+ }
787
+ if (expr.arguments) parser.walkExpressions(expr.arguments);
788
+ return true;
789
+ });
790
+
791
+ // Re-exporting the binding lets the require result escape, so the whole
792
+ // exports object is observable. Stage -10 runs before the harmony bail tap.
793
+ parser.hooks.exportSpecifier.tap(
794
+ { name: PLUGIN_NAME, stage: -10 },
795
+ (_statement, id) => {
796
+ const binding =
797
+ /** @type {RequireBindingData | undefined} */
798
+ (parser.getTagData(id, REQUIRE_BINDING_TAG));
799
+ if (binding) {
800
+ binding.referencedExports = null;
801
+ if (binding.dep) {
802
+ binding.dep.referencedExports = null;
803
+ }
804
+ }
805
+ }
806
+ );
807
+ // #endregion
808
+
645
809
  // #region Require.resolve
646
810
  /**
811
+ * Processes the provided expr.
647
812
  * @param {CallExpression} expr call expression
648
813
  * @param {boolean} weak weak
649
814
  * @returns {boolean | void} true when handled
@@ -44,7 +44,7 @@ const PLUGIN_NAME = "CommonJsPlugin";
44
44
 
45
45
  class CommonJsPlugin {
46
46
  /**
47
- * Apply the plugin
47
+ * Applies the plugin by registering its hooks on the compiler.
48
48
  * @param {Compiler} compiler the compiler instance
49
49
  * @returns {void}
50
50
  */
@@ -174,6 +174,7 @@ class CommonJsPlugin {
174
174
  });
175
175
 
176
176
  /**
177
+ * Handles the hook callback for this code path.
177
178
  * @param {Parser} parser parser parser
178
179
  * @param {JavascriptParserOptions} parserOptions parserOptions
179
180
  * @returns {void}
@@ -219,7 +220,7 @@ class CommonJsPlugin {
219
220
  const dep = new RuntimeRequirementsDependency([
220
221
  RuntimeGlobals.moduleLoaded
221
222
  ]);
222
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
223
+ dep.loc = parser.getLocation(expr);
223
224
  parser.state.module.addPresentationalDependency(dep);
224
225
  return true;
225
226
  });
@@ -233,7 +234,7 @@ class CommonJsPlugin {
233
234
  const dep = new RuntimeRequirementsDependency([
234
235
  RuntimeGlobals.moduleId
235
236
  ]);
236
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
237
+ dep.loc = parser.getLocation(expr);
237
238
  parser.state.module.addPresentationalDependency(dep);
238
239
  return true;
239
240
  });
@@ -266,6 +267,7 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
266
267
  }
267
268
 
268
269
  /**
270
+ * Generates runtime code for this runtime module.
269
271
  * @returns {string | null} runtime code
270
272
  */
271
273
  generate() {
@@ -279,7 +281,7 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
279
281
  "Object.defineProperty(module, 'exports', {",
280
282
  Template.indent([
281
283
  "enumerable: true,",
282
- `set: ${runtimeTemplate.basicFunction("", [
284
+ `${runtimeTemplate.method("set", "", [
283
285
  "throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);"
284
286
  ])}`
285
287
  ]),
@@ -296,6 +298,7 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
296
298
  }
297
299
 
298
300
  /**
301
+ * Generates runtime code for this runtime module.
299
302
  * @returns {string | null} runtime code
300
303
  */
301
304
  generate() {
@@ -11,8 +11,8 @@ const ContextDependency = require("./ContextDependency");
11
11
  const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
12
12
 
13
13
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectSerializerContext */
16
16
  /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
17
17
  /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
18
18
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
@@ -21,6 +21,7 @@ const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTempl
21
21
 
22
22
  class CommonJsRequireContextDependency extends ContextDependency {
23
23
  /**
24
+ * Creates an instance of CommonJsRequireContextDependency.
24
25
  * @param {ContextDependencyOptions} options options for the context module
25
26
  * @param {Range} range location in source code
26
27
  * @param {Range=} valueRange location of the require call
@@ -33,6 +34,7 @@ class CommonJsRequireContextDependency extends ContextDependency {
33
34
  this.range = range;
34
35
  this.valueRange = valueRange;
35
36
  // inShorthand must be serialized by subclasses that use it
37
+ /** @type {string | boolean | undefined} */
36
38
  this.inShorthand = inShorthand;
37
39
  }
38
40
 
@@ -57,29 +59,27 @@ class CommonJsRequireContextDependency extends ContextDependency {
57
59
  }
58
60
 
59
61
  /**
62
+ * Serializes this instance into the provided serializer context.
60
63
  * @param {ObjectSerializerContext} context context
61
64
  */
62
65
  serialize(context) {
63
- const { write } = context;
64
-
65
- write(this.range);
66
- write(this.valueRange);
67
- write(this.inShorthand);
66
+ context.write(this.range).write(this.valueRange).write(this.inShorthand);
68
67
 
69
68
  super.serialize(context);
70
69
  }
71
70
 
72
71
  /**
72
+ * Restores this instance from the provided deserializer context.
73
73
  * @param {ObjectDeserializerContext} context context
74
74
  */
75
75
  deserialize(context) {
76
- const { read } = context;
77
-
78
- this.range = read();
79
- this.valueRange = read();
80
- this.inShorthand = read();
76
+ this.range = context.read();
77
+ const c1 = context.rest;
78
+ this.valueRange = c1.read();
79
+ const c2 = c1.rest;
80
+ this.inShorthand = c2.read();
81
81
 
82
- super.deserialize(context);
82
+ super.deserialize(c2.rest);
83
83
  }
84
84
  }
85
85