webpack 5.97.1 → 5.104.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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -8,18 +8,31 @@
8
8
  const InitFragment = require("./InitFragment");
9
9
  const RuntimeGlobals = require("./RuntimeGlobals");
10
10
  const Template = require("./Template");
11
+ const {
12
+ getOutgoingAsyncModules
13
+ } = require("./async-modules/AsyncModuleHelpers");
14
+ const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
15
+ const {
16
+ getMakeDeferredNamespaceModeFromExportsType,
17
+ getOptimizedDeferredModule
18
+ } = require("./runtime/MakeDeferredNamespaceObjectRuntime");
11
19
  const { equals } = require("./util/ArrayHelpers");
12
20
  const compileBooleanMatcher = require("./util/compileBooleanMatcher");
21
+ const memoize = require("./util/memoize");
13
22
  const propertyAccess = require("./util/propertyAccess");
14
23
  const { forEachRuntime, subtractRuntime } = require("./util/runtime");
15
24
 
16
- /** @typedef {import("../declarations/WebpackOptions").Environment} Environment */
17
- /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
25
+ const getHarmonyImportDependency = memoize(() =>
26
+ require("./dependencies/HarmonyImportDependency")
27
+ );
28
+ const getImportDependency = memoize(() =>
29
+ require("./dependencies/ImportDependency")
30
+ );
31
+
32
+ /** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
18
33
  /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
19
34
  /** @typedef {import("./Chunk")} Chunk */
20
35
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
21
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
22
- /** @typedef {import("./CodeGenerationResults").CodeGenerationResult} CodeGenerationResult */
23
36
  /** @typedef {import("./Compilation")} Compilation */
24
37
  /** @typedef {import("./Dependency")} Dependency */
25
38
  /** @typedef {import("./Module")} Module */
@@ -28,6 +41,8 @@ const { forEachRuntime, subtractRuntime } = require("./util/runtime");
28
41
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
29
42
  /** @typedef {import("./RequestShortener")} RequestShortener */
30
43
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
44
+ /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
45
+ /** @typedef {import("./NormalModuleFactory").ModuleDependency} ModuleDependency */
31
46
 
32
47
  /**
33
48
  * @param {Module} module the module
@@ -42,18 +57,16 @@ This should not happen.
42
57
  It's in these chunks: ${
43
58
  Array.from(
44
59
  chunkGraph.getModuleChunksIterable(module),
45
- c => c.name || c.id || c.debugId
60
+ (c) => c.name || c.id || c.debugId
46
61
  ).join(", ") || "none"
47
62
  } (If module is in no chunk this indicates a bug in some chunk/module optimization logic)
48
63
  Module has these incoming connections: ${Array.from(
49
64
  chunkGraph.moduleGraph.getIncomingConnections(module),
50
- connection =>
65
+ (connection) =>
51
66
  `\n - ${
52
67
  connection.originModule && connection.originModule.identifier()
53
68
  } ${connection.dependency && connection.dependency.type} ${
54
- (connection.explanations &&
55
- Array.from(connection.explanations).join(", ")) ||
56
- ""
69
+ (connection.explanations && [...connection.explanations].join(", ")) || ""
57
70
  }`
58
71
  ).join("")}`;
59
72
 
@@ -72,8 +85,9 @@ function getGlobalObject(definition) {
72
85
  // call expression
73
86
  // expression in parentheses
74
87
  /^([_\p{L}][_0-9\p{L}]*)?\(.*\)$/iu.test(trimmed)
75
- )
88
+ ) {
76
89
  return trimmed;
90
+ }
77
91
 
78
92
  return `Object(${trimmed})`;
79
93
  }
@@ -91,10 +105,7 @@ class RuntimeTemplate {
91
105
  this.globalObject =
92
106
  /** @type {string} */
93
107
  (getGlobalObject(outputOptions.globalObject));
94
- this.contentHashReplacement = "X".repeat(
95
- /** @type {NonNullable<OutputOptions["hashDigestLength"]>} */
96
- (outputOptions.hashDigestLength)
97
- );
108
+ this.contentHashReplacement = "X".repeat(outputOptions.hashDigestLength);
98
109
  }
99
110
 
100
111
  isIIFE() {
@@ -107,7 +118,7 @@ class RuntimeTemplate {
107
118
 
108
119
  isNeutralPlatform() {
109
120
  return (
110
- !this.outputOptions.environment.document &&
121
+ !this.compilation.compiler.platform.web &&
111
122
  !this.compilation.compiler.platform.node
112
123
  );
113
124
  }
@@ -116,6 +127,10 @@ class RuntimeTemplate {
116
127
  return this.outputOptions.environment.const;
117
128
  }
118
129
 
130
+ supportsMethodShorthand() {
131
+ return this.outputOptions.environment.methodShorthand;
132
+ }
133
+
119
134
  supportsArrowFunction() {
120
135
  return this.outputOptions.environment.arrowFunction;
121
136
  }
@@ -156,6 +171,23 @@ class RuntimeTemplate {
156
171
  return this.outputOptions.environment.nodePrefixForCoreModules;
157
172
  }
158
173
 
174
+ /**
175
+ * @param {string} mod a module
176
+ * @returns {string} a module with `node:` prefix when supported, otherwise an original name
177
+ */
178
+ renderNodePrefixForCoreModule(mod) {
179
+ return this.outputOptions.environment.nodePrefixForCoreModules
180
+ ? `"node:${mod}"`
181
+ : `"${mod}"`;
182
+ }
183
+
184
+ /**
185
+ * @returns {"const" | "var"} return `const` when it is supported, otherwise `var`
186
+ */
187
+ renderConst() {
188
+ return this.supportsConst() ? "const" : "var";
189
+ }
190
+
159
191
  /**
160
192
  * @param {string} returnValue return value
161
193
  * @param {string} args arguments
@@ -179,7 +211,7 @@ class RuntimeTemplate {
179
211
  }
180
212
 
181
213
  /**
182
- * @param {Array<string|{expr: string}>} args args
214
+ * @param {(string | { expr: string })[]} args args
183
215
  * @returns {string} result expression
184
216
  */
185
217
  concatenation(...args) {
@@ -216,24 +248,25 @@ class RuntimeTemplate {
216
248
  lastWasExpr = isExpr;
217
249
  }
218
250
  if (lastWasExpr) concatenationCost -= 3;
219
- if (typeof args[0] !== "string" && typeof args[1] === "string")
251
+ if (typeof args[0] !== "string" && typeof args[1] === "string") {
220
252
  concatenationCost -= 3;
253
+ }
221
254
 
222
255
  if (concatenationCost <= templateCost) return this._es5Concatenation(args);
223
256
 
224
257
  return `\`${args
225
- .map(arg => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
258
+ .map((arg) => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
226
259
  .join("")}\``;
227
260
  }
228
261
 
229
262
  /**
230
- * @param {Array<string|{expr: string}>} args args (len >= 2)
263
+ * @param {(string | { expr: string })[]} args args (len >= 2)
231
264
  * @returns {string} result expression
232
265
  * @private
233
266
  */
234
267
  _es5Concatenation(args) {
235
268
  const str = args
236
- .map(arg => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
269
+ .map((arg) => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
237
270
  .join(" + ");
238
271
 
239
272
  // when the first two args are expression, we need to prepend "" + to force string
@@ -283,7 +316,9 @@ class RuntimeTemplate {
283
316
  return this.supportsDestructuring()
284
317
  ? `var {${items.join(", ")}} = ${value};`
285
318
  : Template.asString(
286
- items.map(item => `var ${item} = ${value}${propertyAccess([item])};`)
319
+ items.map(
320
+ (item) => `var ${item} = ${value}${propertyAccess([item])};`
321
+ )
287
322
  );
288
323
  }
289
324
 
@@ -325,12 +360,12 @@ class RuntimeTemplate {
325
360
  if (this.outputOptions.pathinfo) {
326
361
  content = [message, request, chunkName, chunkReason]
327
362
  .filter(Boolean)
328
- .map(item => this.requestShortener.shorten(item))
363
+ .map((item) => this.requestShortener.shorten(item))
329
364
  .join(" | ");
330
365
  } else {
331
366
  content = [message, chunkName, chunkReason]
332
367
  .filter(Boolean)
333
- .map(item => this.requestShortener.shorten(item))
368
+ .map((item) => this.requestShortener.shorten(item))
334
369
  .join(" | ");
335
370
  }
336
371
  if (!content) return "";
@@ -597,6 +632,7 @@ class RuntimeTemplate {
597
632
  * @param {string} options.message a message for the comment
598
633
  * @param {boolean=} options.strict if the current module is in strict esm mode
599
634
  * @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
635
+ * @param {Dependency} options.dependency dependency
600
636
  * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
601
637
  * @returns {string} the promise expression
602
638
  */
@@ -608,6 +644,7 @@ class RuntimeTemplate {
608
644
  message,
609
645
  strict,
610
646
  weak,
647
+ dependency,
611
648
  runtimeRequirements
612
649
  }) {
613
650
  if (!module) {
@@ -664,42 +701,45 @@ class RuntimeTemplate {
664
701
  type: "statements"
665
702
  })} } `;
666
703
  }
667
- const moduleIdExpr = this.moduleId({
668
- module,
669
- chunkGraph,
670
- request,
671
- weak
672
- });
673
704
  const exportsType = module.getExportsType(chunkGraph.moduleGraph, strict);
674
- let fakeType = 16;
675
- switch (exportsType) {
676
- case "namespace":
705
+
706
+ const isModuleDeferred =
707
+ (dependency instanceof getHarmonyImportDependency() ||
708
+ dependency instanceof getImportDependency()) &&
709
+ ImportPhaseUtils.isDefer(dependency.phase) &&
710
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
711
+
712
+ if (isModuleDeferred) {
713
+ runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
714
+ const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
715
+ const asyncDeps = Array.from(
716
+ getOutgoingAsyncModules(chunkGraph.moduleGraph, module),
717
+ (m) => chunkGraph.getModuleId(m)
718
+ ).filter((id) => id !== null);
719
+ if (asyncDeps.length) {
677
720
  if (header) {
678
- const rawModule = this.moduleRaw({
679
- module,
680
- chunkGraph,
681
- request,
682
- weak,
683
- runtimeRequirements
684
- });
685
721
  appending = `.then(${this.basicFunction(
686
722
  "",
687
- `${header}return ${rawModule};`
723
+ `${header}return ${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)});`
688
724
  )})`;
689
725
  } else {
690
726
  runtimeRequirements.add(RuntimeGlobals.require);
691
- appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
727
+ appending = `.then(${this.returningFunction(`${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)})`)})`;
692
728
  }
693
- break;
694
- case "dynamic":
695
- fakeType |= 4;
696
- /* fall through */
697
- case "default-with-named":
698
- fakeType |= 2;
699
- /* fall through */
700
- case "default-only":
701
- runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
702
- if (chunkGraph.moduleGraph.isAsync(module)) {
729
+ appending += `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
730
+ } else if (header) {
731
+ appending = `.then(${this.basicFunction(
732
+ "",
733
+ `${header}return ${RuntimeGlobals.makeDeferredNamespaceObject}(${comment}${idExpr}, ${mode});`
734
+ )})`;
735
+ } else {
736
+ runtimeRequirements.add(RuntimeGlobals.require);
737
+ appending = `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
738
+ }
739
+ } else {
740
+ let fakeType = 16;
741
+ switch (exportsType) {
742
+ case "namespace":
703
743
  if (header) {
704
744
  const rawModule = this.moduleRaw({
705
745
  module,
@@ -716,23 +756,56 @@ class RuntimeTemplate {
716
756
  runtimeRequirements.add(RuntimeGlobals.require);
717
757
  appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
718
758
  }
719
- appending += `.then(${this.returningFunction(
720
- `${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
721
- "m"
722
- )})`;
723
- } else {
724
- fakeType |= 1;
725
- if (header) {
726
- const returnExpression = `${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, ${fakeType})`;
727
- appending = `.then(${this.basicFunction(
728
- "",
729
- `${header}return ${returnExpression};`
759
+ break;
760
+ case "dynamic":
761
+ fakeType |= 4;
762
+ /* fall through */
763
+ case "default-with-named":
764
+ fakeType |= 2;
765
+ /* fall through */
766
+ case "default-only":
767
+ runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
768
+ if (chunkGraph.moduleGraph.isAsync(module)) {
769
+ if (header) {
770
+ const rawModule = this.moduleRaw({
771
+ module,
772
+ chunkGraph,
773
+ request,
774
+ weak,
775
+ runtimeRequirements
776
+ });
777
+ appending = `.then(${this.basicFunction(
778
+ "",
779
+ `${header}return ${rawModule};`
780
+ )})`;
781
+ } else {
782
+ runtimeRequirements.add(RuntimeGlobals.require);
783
+ appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
784
+ }
785
+ appending += `.then(${this.returningFunction(
786
+ `${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
787
+ "m"
730
788
  )})`;
731
789
  } else {
732
- appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
790
+ fakeType |= 1;
791
+ if (header) {
792
+ const moduleIdExpr = this.moduleId({
793
+ module,
794
+ chunkGraph,
795
+ request,
796
+ weak
797
+ });
798
+ const returnExpression = `${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, ${fakeType})`;
799
+ appending = `.then(${this.basicFunction(
800
+ "",
801
+ `${header}return ${returnExpression};`
802
+ )})`;
803
+ } else {
804
+ appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
805
+ }
733
806
  }
734
- }
735
- break;
807
+ break;
808
+ }
736
809
  }
737
810
 
738
811
  return `${promise || "Promise.resolve()"}${appending}`;
@@ -756,22 +829,22 @@ class RuntimeTemplate {
756
829
  if (typeof runtimeCondition === "boolean") return `${runtimeCondition}`;
757
830
  /** @type {Set<string>} */
758
831
  const positiveRuntimeIds = new Set();
759
- forEachRuntime(runtimeCondition, runtime =>
832
+ forEachRuntime(runtimeCondition, (runtime) =>
760
833
  positiveRuntimeIds.add(
761
834
  `${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
762
835
  )
763
836
  );
764
837
  /** @type {Set<string>} */
765
838
  const negativeRuntimeIds = new Set();
766
- forEachRuntime(subtractRuntime(runtime, runtimeCondition), runtime =>
839
+ forEachRuntime(subtractRuntime(runtime, runtimeCondition), (runtime) =>
767
840
  negativeRuntimeIds.add(
768
841
  `${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
769
842
  )
770
843
  );
771
844
  runtimeRequirements.add(RuntimeGlobals.runtimeId);
772
845
  return compileBooleanMatcher.fromLists(
773
- Array.from(positiveRuntimeIds),
774
- Array.from(negativeRuntimeIds)
846
+ [...positiveRuntimeIds],
847
+ [...negativeRuntimeIds]
775
848
  )(RuntimeGlobals.runtimeId);
776
849
  }
777
850
 
@@ -779,22 +852,26 @@ class RuntimeTemplate {
779
852
  * @param {object} options options object
780
853
  * @param {boolean=} options.update whether a new variable should be created or the existing one updated
781
854
  * @param {Module} options.module the module
855
+ * @param {ModuleGraph} options.moduleGraph the module graph
782
856
  * @param {ChunkGraph} options.chunkGraph the chunk graph
783
857
  * @param {string} options.request the request that should be printed as comment
784
858
  * @param {string} options.importVar name of the import variable
785
859
  * @param {Module} options.originModule module in which the statement is emitted
786
860
  * @param {boolean=} options.weak true, if this is a weak dependency
787
861
  * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
862
+ * @param {ModuleDependency} options.dependency module dependency
788
863
  * @returns {[string, string]} the import statement and the compat statement
789
864
  */
790
865
  importStatement({
791
866
  update,
792
867
  module,
868
+ moduleGraph,
793
869
  chunkGraph,
794
870
  request,
795
871
  importVar,
796
872
  originModule,
797
873
  weak,
874
+ dependency,
798
875
  runtimeRequirements
799
876
  }) {
800
877
  if (!module) {
@@ -805,6 +882,7 @@ class RuntimeTemplate {
805
882
  ""
806
883
  ];
807
884
  }
885
+
808
886
  if (chunkGraph.getModuleId(module) === null) {
809
887
  if (weak) {
810
888
  // only weak referenced modules don't get an id
@@ -840,7 +918,28 @@ class RuntimeTemplate {
840
918
  (originModule.buildMeta).strictHarmonyModule
841
919
  );
842
920
  runtimeRequirements.add(RuntimeGlobals.require);
843
- const importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
921
+ let importContent;
922
+
923
+ const isModuleDeferred =
924
+ (dependency instanceof getHarmonyImportDependency() ||
925
+ dependency instanceof getImportDependency()) &&
926
+ ImportPhaseUtils.isDefer(dependency.phase) &&
927
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
928
+
929
+ if (isModuleDeferred) {
930
+ /** @type {Set<Module>} */
931
+ const outgoingAsyncModules = getOutgoingAsyncModules(moduleGraph, module);
932
+
933
+ importContent = `/* deferred harmony import */ ${optDeclaration}${importVar} = ${getOptimizedDeferredModule(
934
+ moduleId,
935
+ exportsType,
936
+ Array.from(outgoingAsyncModules, (mod) => chunkGraph.getModuleId(mod)),
937
+ runtimeRequirements
938
+ )};\n`;
939
+
940
+ return [importContent, ""];
941
+ }
942
+ importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
844
943
 
845
944
  if (exportsType === "dynamic") {
846
945
  runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
@@ -853,24 +952,28 @@ class RuntimeTemplate {
853
952
  }
854
953
 
855
954
  /**
955
+ * @template GenerateContext
856
956
  * @param {object} options options
857
957
  * @param {ModuleGraph} options.moduleGraph the module graph
958
+ * @param {ChunkGraph} options.chunkGraph the chunk graph
858
959
  * @param {Module} options.module the module
859
960
  * @param {string} options.request the request
860
961
  * @param {string | string[]} options.exportName the export name
861
962
  * @param {Module} options.originModule the origin module
862
- * @param {boolean|undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
963
+ * @param {boolean | undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
863
964
  * @param {boolean} options.isCall true, if expression will be called
864
965
  * @param {boolean | null} options.callContext when false, call context will not be preserved
865
966
  * @param {boolean} options.defaultInterop when true and accessing the default exports, interop code will be generated
866
967
  * @param {string} options.importVar the identifier name of the import variable
867
- * @param {InitFragment<TODO>[]} options.initFragments init fragments will be added here
968
+ * @param {InitFragment<GenerateContext>[]} options.initFragments init fragments will be added here
868
969
  * @param {RuntimeSpec} options.runtime runtime for which this code will be generated
869
970
  * @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
971
+ * @param {ModuleDependency} options.dependency module dependency
870
972
  * @returns {string} expression
871
973
  */
872
974
  exportFromImport({
873
975
  moduleGraph,
976
+ chunkGraph,
874
977
  module,
875
978
  request,
876
979
  exportName,
@@ -882,7 +985,8 @@ class RuntimeTemplate {
882
985
  importVar,
883
986
  initFragments,
884
987
  runtime,
885
- runtimeRequirements
988
+ runtimeRequirements,
989
+ dependency
886
990
  }) {
887
991
  if (!module) {
888
992
  return this.missingModule({
@@ -898,8 +1002,37 @@ class RuntimeTemplate {
898
1002
  (originModule.buildMeta).strictHarmonyModule
899
1003
  );
900
1004
 
1005
+ const isModuleDeferred =
1006
+ (dependency instanceof getHarmonyImportDependency() ||
1007
+ dependency instanceof getImportDependency()) &&
1008
+ ImportPhaseUtils.isDefer(dependency.phase) &&
1009
+ !(/** @type {BuildMeta} */ (module.buildMeta).async);
1010
+
901
1011
  if (defaultInterop) {
1012
+ // when the defaultInterop is used (when a ESM imports a CJS module),
902
1013
  if (exportName.length > 0 && exportName[0] === "default") {
1014
+ if (isModuleDeferred && exportsType !== "namespace") {
1015
+ const exportsInfo = moduleGraph.getExportsInfo(module);
1016
+ const name = exportName.slice(1);
1017
+ const used = exportsInfo.getUsedName(name, runtime);
1018
+ if (!used) {
1019
+ const comment = Template.toNormalComment(
1020
+ `unused export ${propertyAccess(exportName)}`
1021
+ );
1022
+ return `${comment} undefined`;
1023
+ }
1024
+ const access = `${importVar}.a${propertyAccess(used)}`;
1025
+ if (isCall || asiSafe === undefined) {
1026
+ return access;
1027
+ }
1028
+ return asiSafe ? `(${access})` : `;(${access})`;
1029
+ }
1030
+ // accessing the .default property is same thing as `require()` the module.
1031
+
1032
+ // For example:
1033
+ // import mod from "cjs"; mod.default.x;
1034
+ // is translated to
1035
+ // var mod = require("cjs"); mod.x;
903
1036
  switch (exportsType) {
904
1037
  case "dynamic":
905
1038
  if (isCall) {
@@ -917,7 +1050,11 @@ class RuntimeTemplate {
917
1050
  break;
918
1051
  }
919
1052
  } else if (exportName.length > 0) {
1053
+ // the property used is not .default.
1054
+ // For example:
1055
+ // import * as ns from "cjs"; cjs.prop;
920
1056
  if (exportsType === "default-only") {
1057
+ // in the strictest case, it is a runtime error (e.g. NodeJS behavior of CJS-ESM interop).
921
1058
  return `/* non-default import from non-esm module */undefined${propertyAccess(
922
1059
  exportName,
923
1060
  1
@@ -928,10 +1065,17 @@ class RuntimeTemplate {
928
1065
  ) {
929
1066
  return "/* __esModule */true";
930
1067
  }
1068
+ } else if (isModuleDeferred) {
1069
+ // now exportName.length is 0
1070
+ // fall through to the end of this function, create the namespace there.
931
1071
  } else if (
932
1072
  exportsType === "default-only" ||
933
1073
  exportsType === "default-with-named"
934
1074
  ) {
1075
+ // now exportName.length is 0, which means the namespace object is used in an unknown way
1076
+ // for example:
1077
+ // import * as ns from "cjs"; console.log(ns);
1078
+ // we will need to createFakeNamespaceObject that simulates ES Module namespace object
935
1079
  runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
936
1080
  initFragments.push(
937
1081
  new InitFragment(
@@ -951,6 +1095,8 @@ class RuntimeTemplate {
951
1095
 
952
1096
  if (exportName.length > 0) {
953
1097
  const exportsInfo = moduleGraph.getExportsInfo(module);
1098
+ // in some case the exported item is renamed (get this by getUsedName). for example,
1099
+ // x.default might be emitted as x.Z (default is renamed to Z)
954
1100
  const used = exportsInfo.getUsedName(exportName, runtime);
955
1101
  if (!used) {
956
1102
  const comment = Template.toNormalComment(
@@ -961,7 +1107,9 @@ class RuntimeTemplate {
961
1107
  const comment = equals(used, exportName)
962
1108
  ? ""
963
1109
  : `${Template.toNormalComment(propertyAccess(exportName))} `;
964
- const access = `${importVar}${comment}${propertyAccess(used)}`;
1110
+ const access = `${importVar}${
1111
+ isModuleDeferred ? ".a" : ""
1112
+ }${comment}${propertyAccess(used)}`;
965
1113
  if (isCall && callContext === false) {
966
1114
  return asiSafe
967
1115
  ? `(0,${access})`
@@ -971,6 +1119,30 @@ class RuntimeTemplate {
971
1119
  }
972
1120
  return access;
973
1121
  }
1122
+ if (isModuleDeferred) {
1123
+ initFragments.push(
1124
+ new InitFragment(
1125
+ `var ${importVar}_deferred_namespace_cache;\n`,
1126
+ InitFragment.STAGE_CONSTANTS,
1127
+ -1,
1128
+ `${importVar}_deferred_namespace_cache`
1129
+ )
1130
+ );
1131
+
1132
+ runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
1133
+ const id = chunkGraph.getModuleId(module);
1134
+ const type = getMakeDeferredNamespaceModeFromExportsType(exportsType);
1135
+ const init = `${
1136
+ RuntimeGlobals.makeDeferredNamespaceObject
1137
+ }(${JSON.stringify(id)}, ${type})`;
1138
+
1139
+ return `/*#__PURE__*/ ${
1140
+ asiSafe ? "" : asiSafe === false ? ";" : "Object"
1141
+ }(${importVar}_deferred_namespace_cache || (${importVar}_deferred_namespace_cache = ${init}))`;
1142
+ }
1143
+ // if we hit here, the importVar is either
1144
+ // - already a ES module namespace object
1145
+ // - or imported by a way that does not need interop.
974
1146
  return importVar;
975
1147
  }
976
1148
 
@@ -997,7 +1169,7 @@ class RuntimeTemplate {
997
1169
  return `Promise.resolve(${comment.trim()})`;
998
1170
  }
999
1171
  const chunks = chunkGroup.chunks.filter(
1000
- chunk => !chunk.hasRuntime() && chunk.id !== null
1172
+ (chunk) => !chunk.hasRuntime() && chunk.id !== null
1001
1173
  );
1002
1174
  const comment = this.comment({
1003
1175
  message,
@@ -1029,7 +1201,7 @@ class RuntimeTemplate {
1029
1201
  * @param {Chunk} chunk chunk
1030
1202
  * @returns {string} require chunk id code
1031
1203
  */
1032
- const requireChunkId = chunk =>
1204
+ const requireChunkId = (chunk) =>
1033
1205
  `${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}${
1034
1206
  fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
1035
1207
  })`;
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
8
9
  /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
9
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
10
10
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
11
11
 
12
12
  class SelfModuleFactory {
@@ -19,7 +19,7 @@ class SelfModuleFactory {
19
19
 
20
20
  /**
21
21
  * @param {ModuleFactoryCreateData} data data object
22
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
22
+ * @param {ModuleFactoryCallback} callback callback
23
23
  * @returns {void}
24
24
  */
25
25
  create(data, callback) {
@@ -6,10 +6,10 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
- * @param {number} size the size in bytes
9
+ * @param {number=} size the size in bytes
10
10
  * @returns {string} the formatted size
11
11
  */
12
- module.exports.formatSize = size => {
12
+ module.exports.formatSize = (size) => {
13
13
  if (typeof size !== "number" || Number.isNaN(size) === true) {
14
14
  return "unknown size";
15
15
  }