@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
@@ -22,6 +22,7 @@ const makeSerializable = require("../util/makeSerializable");
22
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
23
 
24
24
  /**
25
+ * Defines the sync hook type used by this module.
25
26
  * @template T
26
27
  * @typedef {import("tapable").SyncHook<T>} SyncHook
27
28
  */
@@ -30,15 +31,19 @@ const makeSerializable = require("../util/makeSerializable");
30
31
 
31
32
  class CacheEntry {
32
33
  /**
34
+ * Creates an instance of CacheEntry.
33
35
  * @param {ResolveRequest} result result
34
36
  * @param {Snapshot} snapshot snapshot
35
37
  */
36
38
  constructor(result, snapshot) {
39
+ /** @type {ResolveRequest} */
37
40
  this.result = result;
41
+ /** @type {Snapshot} */
38
42
  this.snapshot = snapshot;
39
43
  }
40
44
 
41
45
  /**
46
+ * Serializes this instance into the provided serializer context.
42
47
  * @param {ObjectSerializerContext} context context
43
48
  */
44
49
  serialize({ write }) {
@@ -47,6 +52,7 @@ class CacheEntry {
47
52
  }
48
53
 
49
54
  /**
55
+ * Restores this instance from the provided deserializer context.
50
56
  * @param {ObjectDeserializerContext} context context
51
57
  */
52
58
  deserialize({ read }) {
@@ -58,6 +64,7 @@ class CacheEntry {
58
64
  makeSerializable(CacheEntry, "webpack/lib/cache/ResolverCachePlugin");
59
65
 
60
66
  /**
67
+ * Adds the provided set to the cache entry.
61
68
  * @template T
62
69
  * @param {Set<T> | LazySet<T>} set set to add items to
63
70
  * @param {Set<T> | LazySet<T> | Iterable<T>} otherSet set to add items from
@@ -74,6 +81,7 @@ const addAllToSet = (set, otherSet) => {
74
81
  };
75
82
 
76
83
  /**
84
+ * Returns stringified version.
77
85
  * @template {object} T
78
86
  * @param {T} object an object
79
87
  * @param {boolean} excludeContext if true, context is not included in string
@@ -98,7 +106,7 @@ const PLUGIN_NAME = "ResolverCachePlugin";
98
106
 
99
107
  class ResolverCachePlugin {
100
108
  /**
101
- * Apply the plugin
109
+ * Applies the plugin by registering its hooks on the compiler.
102
110
  * @param {Compiler} compiler the compiler instance
103
111
  * @returns {void}
104
112
  */
@@ -135,6 +143,7 @@ class ResolverCachePlugin {
135
143
  /** @typedef {ResolveRequest & { _ResolverCachePluginCacheMiss: true }} ResolveRequestWithCacheMiss */
136
144
 
137
145
  /**
146
+ * Processes the provided item cache.
138
147
  * @param {ItemCacheFacade} itemCache cache
139
148
  * @param {Resolver} resolver the resolver
140
149
  * @param {ResolveContext} resolveContext context for resolving meta info
@@ -175,6 +184,7 @@ class ResolverCachePlugin {
175
184
  (yieldResult).push(obj);
176
185
  }
177
186
  /**
187
+ * Processes the provided key.
178
188
  * @param {"fileDependencies" | "contextDependencies" | "missingDependencies"} key key
179
189
  */
180
190
  const propagate = (key) => {
@@ -375,6 +385,7 @@ class ResolverCachePlugin {
375
385
  }
376
386
  };
377
387
  /**
388
+ * Process cache result.
378
389
  * @param {(Error | null)=} err error if any
379
390
  * @param {(CacheEntry | null)=} cacheEntry cache entry
380
391
  * @returns {void}
@@ -13,17 +13,19 @@ const createHash = require("../util/createHash");
13
13
  /** @typedef {import("../util/Hash").HashFunction} HashFunction */
14
14
 
15
15
  /**
16
+ * Represents the lazy hashed etag runtime component.
16
17
  * @typedef {object} HashableObject
17
18
  * @property {(hash: Hash) => void} updateHash
18
19
  */
19
20
 
20
21
  class LazyHashedEtag {
21
22
  /**
23
+ * Creates an instance of LazyHashedEtag.
22
24
  * @param {HashableObject} obj object with updateHash method
23
25
  * @param {HashFunction} hashFunction the hash function to use
24
26
  */
25
27
  constructor(obj, hashFunction = DEFAULTS.HASH_FUNCTION) {
26
- /** @type {HashableObject} */
28
+ /** @type {HashableObject | undefined} */
27
29
  this._obj = obj;
28
30
  /** @type {undefined | string} */
29
31
  this._hash = undefined;
@@ -32,13 +34,21 @@ class LazyHashedEtag {
32
34
  }
33
35
 
34
36
  /**
37
+ * Returns a string representation.
35
38
  * @returns {string} hash of object
36
39
  */
37
40
  toString() {
38
41
  if (this._hash === undefined) {
39
42
  const hash = createHash(this._hashFunction);
40
- this._obj.updateHash(hash);
43
+ /** @type {HashableObject} */
44
+ (this._obj).updateHash(hash);
41
45
  this._hash = hash.digest("base64");
46
+ // Drop the captured object once the hash is memoized. The hash is
47
+ // never reset, so we never need `_obj` again — and many callers
48
+ // (e.g. `SourceMapDevToolPlugin`, `RealContentHashPlugin`) capture
49
+ // a heavy `CachedSource` here that would otherwise stay reachable
50
+ // through this etag for the lifetime of the compilation cache.
51
+ this._obj = undefined;
42
52
  }
43
53
  return this._hash;
44
54
  }
@@ -53,6 +63,7 @@ const mapStrings = new Map();
53
63
  const mapObjects = new WeakMap();
54
64
 
55
65
  /**
66
+ * Returns etag.
56
67
  * @param {HashableObject} obj object with updateHash method
57
68
  * @param {HashFunction=} hashFunction the hash function to use
58
69
  * @returns {LazyHashedEtag} etag
@@ -9,11 +9,14 @@
9
9
 
10
10
  class MergedEtag {
11
11
  /**
12
+ * Creates an instance of MergedEtag.
12
13
  * @param {Etag} a first
13
14
  * @param {Etag} b second
14
15
  */
15
16
  constructor(a, b) {
17
+ /** @type {Etag} */
16
18
  this.a = a;
19
+ /** @type {Etag} */
17
20
  this.b = b;
18
21
  }
19
22
 
@@ -28,6 +31,7 @@ const dualObjectMap = new WeakMap();
28
31
  const objectStringMap = new WeakMap();
29
32
 
30
33
  /**
34
+ * Merges the provided values into a single result.
31
35
  * @param {Etag} a first
32
36
  * @param {Etag} b second
33
37
  * @returns {string | MergedEtag} result
package/lib/cli.js CHANGED
@@ -7,7 +7,9 @@
7
7
 
8
8
  const path = require("path");
9
9
  const tty = require("tty");
10
- const webpackSchema = require("../schemas/WebpackOptions.json");
10
+ const webpackSchema =
11
+ /** @type {EXPECTED_ANY} */
12
+ (require("../schemas/WebpackOptions.json"));
11
13
 
12
14
  /** @typedef {import("json-schema").JSONSchema4} JSONSchema4 */
13
15
  /** @typedef {import("json-schema").JSONSchema6} JSONSchema6 */
@@ -15,18 +17,20 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
15
17
  /** @typedef {JSONSchema4 | JSONSchema6 | JSONSchema7} JSONSchema */
16
18
  /** @typedef {JSONSchema & { absolutePath: boolean, instanceof: string, cli: { helper?: boolean, exclude?: boolean, description?: string, negatedDescription?: string, resetDescription?: string } }} Schema */
17
19
 
18
- // TODO add originPath to PathItem for better errors
19
20
  /**
21
+ * Defines the path item type used by this module.
20
22
  * @typedef {object} PathItem
21
23
  * @property {Schema} schema the part of the schema
22
24
  * @property {string} path the path in the config
25
+ * @property {string} segment the JSON pointer segment of this schema part (absolute when starting with "#")
23
26
  */
24
27
 
25
- /** @typedef {"unknown-argument" | "unexpected-non-array-in-path" | "unexpected-non-object-in-path" | "multiple-values-unexpected" | "invalid-value"} ProblemType */
28
+ /** @typedef {"unknown-argument" | "unexpected-non-array-in-path" | "unexpected-non-object-in-path" | "prototype-pollution-in-path" | "multiple-values-unexpected" | "invalid-value"} ProblemType */
26
29
 
27
30
  /** @typedef {string | number | boolean | RegExp} Value */
28
31
 
29
32
  /**
33
+ * Defines the problem type used by this module.
30
34
  * @typedef {object} Problem
31
35
  * @property {ProblemType} type
32
36
  * @property {string} path
@@ -37,6 +41,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
37
41
  */
38
42
 
39
43
  /**
44
+ * Defines the local problem type used by this module.
40
45
  * @typedef {object} LocalProblem
41
46
  * @property {ProblemType} type
42
47
  * @property {string} path
@@ -48,6 +53,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
48
53
  /** @typedef {string | number | boolean | EnumValueObject | EnumValueArray | null} EnumValue */
49
54
 
50
55
  /**
56
+ * Defines the argument config type used by this module.
51
57
  * @typedef {object} ArgumentConfig
52
58
  * @property {string=} description
53
59
  * @property {string=} negatedDescription
@@ -60,6 +66,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
60
66
  /** @typedef {"string" | "number" | "boolean"} SimpleType */
61
67
 
62
68
  /**
69
+ * Defines the argument type used by this module.
63
70
  * @typedef {object} Argument
64
71
  * @property {string | undefined} description
65
72
  * @property {SimpleType} simpleType
@@ -72,6 +79,7 @@ const webpackSchema = require("../schemas/WebpackOptions.json");
72
79
  /** @typedef {Record<string, EXPECTED_ANY>} ObjectConfiguration */
73
80
 
74
81
  /**
82
+ * Returns object of arguments.
75
83
  * @param {Schema=} schema a json schema to create arguments for (by default webpack schema is used)
76
84
  * @returns {Flags} object of arguments
77
85
  */
@@ -80,6 +88,7 @@ const getArguments = (schema = webpackSchema) => {
80
88
  const flags = {};
81
89
 
82
90
  /**
91
+ * Path to argument name.
83
92
  * @param {string} input input
84
93
  * @returns {string} result
85
94
  */
@@ -95,6 +104,7 @@ const getArguments = (schema = webpackSchema) => {
95
104
  .toLowerCase();
96
105
 
97
106
  /**
107
+ * Returns schema part.
98
108
  * @param {string} path path
99
109
  * @returns {Schema} schema part
100
110
  */
@@ -117,6 +127,7 @@ const getArguments = (schema = webpackSchema) => {
117
127
  };
118
128
 
119
129
  /**
130
+ * Returns description.
120
131
  * @param {PathItem[]} path path in the schema
121
132
  * @returns {string | undefined} description
122
133
  */
@@ -131,6 +142,7 @@ const getArguments = (schema = webpackSchema) => {
131
142
  };
132
143
 
133
144
  /**
145
+ * Gets negated description.
134
146
  * @param {PathItem[]} path path in the schema
135
147
  * @returns {string | undefined} negative description
136
148
  */
@@ -144,6 +156,7 @@ const getArguments = (schema = webpackSchema) => {
144
156
  };
145
157
 
146
158
  /**
159
+ * Gets reset description.
147
160
  * @param {PathItem[]} path path in the schema
148
161
  * @returns {string | undefined} reset description
149
162
  */
@@ -157,6 +170,7 @@ const getArguments = (schema = webpackSchema) => {
157
170
  };
158
171
 
159
172
  /**
173
+ * Schema to argument config.
160
174
  * @param {Schema} schemaPart schema
161
175
  * @returns {Pick<ArgumentConfig, "type" | "values"> | undefined} partial argument config
162
176
  */
@@ -167,6 +181,12 @@ const getArguments = (schema = webpackSchema) => {
167
181
  values: schemaPart.enum
168
182
  };
169
183
  }
184
+ if (schemaPart.const !== undefined) {
185
+ return {
186
+ type: "enum",
187
+ values: [schemaPart.const]
188
+ };
189
+ }
170
190
  switch (schemaPart.type) {
171
191
  case "number":
172
192
  return {
@@ -190,6 +210,7 @@ const getArguments = (schema = webpackSchema) => {
190
210
  };
191
211
 
192
212
  /**
213
+ * Adds the provided path to this object.
193
214
  * @param {PathItem[]} path path in the schema
194
215
  * @returns {void}
195
216
  */
@@ -219,6 +240,21 @@ const getArguments = (schema = webpackSchema) => {
219
240
  };
220
241
 
221
242
  /**
243
+ * Joins the per-item segments into a JSON pointer (built only when needed).
244
+ * @param {PathItem[]} path full path in schema (deepest item first)
245
+ * @returns {string} JSON pointer to the deepest schema part
246
+ */
247
+ const getOriginPath = (path) => {
248
+ let origin = "";
249
+ for (let i = path.length - 1; i >= 0; i--) {
250
+ const { segment } = path[i];
251
+ origin = segment[0] === "#" ? segment : origin + segment;
252
+ }
253
+ return origin;
254
+ };
255
+
256
+ /**
257
+ * Adds the provided path to this object.
222
258
  * @param {PathItem[]} path full path in schema
223
259
  * @param {boolean} multiple inside of an array
224
260
  * @returns {number} number of arguments added
@@ -267,7 +303,11 @@ const getArguments = (schema = webpackSchema) => {
267
303
  ) {
268
304
  if (multiple) {
269
305
  throw new Error(
270
- `Conflicting schema for ${path[0].path} with ${argConfig.type} type (array type must be before single item type)`
306
+ `Conflicting schema for ${path[0].path} (${getOriginPath(
307
+ path
308
+ )}) with ${
309
+ argConfig.type
310
+ } type (array type must be before single item type)`
271
311
  );
272
312
  }
273
313
  return 0;
@@ -278,17 +318,25 @@ const getArguments = (schema = webpackSchema) => {
278
318
  return 1;
279
319
  };
280
320
 
281
- // TODO support `not` and `if/then/else`
282
- // TODO support `const`, but we don't use it on our schema
321
+ // TODO support `not`
283
322
  /**
323
+ * Returns added arguments.
284
324
  * @param {Schema} schemaPart the current schema
285
- * @param {string} schemaPath the current path in the schema
325
+ * @param {string} schemaPath the current path in the config
286
326
  * @param {PathItem[]} path all previous visited schemaParts
287
327
  * @param {string | null} inArray if inside of an array, the path to the array
328
+ * @param {string} segment the JSON pointer segment of the current schema
288
329
  * @returns {number} added arguments
289
330
  */
290
- const traverse = (schemaPart, schemaPath = "", path = [], inArray = null) => {
331
+ const traverse = (
332
+ schemaPart,
333
+ schemaPath = "",
334
+ path = [],
335
+ inArray = null,
336
+ segment = "#"
337
+ ) => {
291
338
  while (schemaPart.$ref) {
339
+ segment = schemaPart.$ref;
292
340
  schemaPart = getSchemaPart(schemaPart.$ref);
293
341
  }
294
342
 
@@ -303,12 +351,33 @@ const getArguments = (schema = webpackSchema) => {
303
351
  if (schemaPart.cli && schemaPart.cli.exclude) return 0;
304
352
 
305
353
  /** @type {PathItem[]} */
306
- const fullPath = [{ schema: schemaPart, path: schemaPath }, ...path];
354
+ const fullPath = [
355
+ { schema: schemaPart, path: schemaPath, segment },
356
+ ...path
357
+ ];
307
358
 
308
359
  let addedArguments = 0;
309
360
 
310
361
  addedArguments += addFlag(fullPath, Boolean(inArray));
311
362
 
363
+ // Collect flags from both branches of a conditional schema.
364
+ const conditional = /** @type {JSONSchema7} */ (schemaPart);
365
+ if (conditional.if) {
366
+ for (const key of /** @type {const} */ (["if", "then", "else"])) {
367
+ const subSchema = conditional[key];
368
+ if (subSchema && typeof subSchema === "object") {
369
+ addedArguments += traverse(
370
+ /** @type {Schema} */
371
+ (subSchema),
372
+ schemaPath,
373
+ fullPath,
374
+ inArray,
375
+ `/${key}`
376
+ );
377
+ }
378
+ }
379
+ }
380
+
312
381
  if (schemaPart.type === "object") {
313
382
  if (schemaPart.properties) {
314
383
  for (const property of Object.keys(schemaPart.properties)) {
@@ -317,7 +386,8 @@ const getArguments = (schema = webpackSchema) => {
317
386
  (schemaPart.properties[property]),
318
387
  schemaPath ? `${schemaPath}.${property}` : property,
319
388
  fullPath,
320
- inArray
389
+ inArray,
390
+ `/properties/${property}`
321
391
  );
322
392
  }
323
393
  }
@@ -337,7 +407,8 @@ const getArguments = (schema = webpackSchema) => {
337
407
  (item),
338
408
  `${schemaPath}.${i}`,
339
409
  fullPath,
340
- schemaPath
410
+ schemaPath,
411
+ `/items/${i}`
341
412
  );
342
413
  }
343
414
 
@@ -349,7 +420,8 @@ const getArguments = (schema = webpackSchema) => {
349
420
  (schemaPart.items),
350
421
  `${schemaPath}[]`,
351
422
  fullPath,
352
- schemaPath
423
+ schemaPath,
424
+ "/items"
353
425
  );
354
426
 
355
427
  if (addedArguments > 0) {
@@ -360,10 +432,16 @@ const getArguments = (schema = webpackSchema) => {
360
432
  return addedArguments;
361
433
  }
362
434
 
363
- const maybeOf = schemaPart.oneOf || schemaPart.anyOf || schemaPart.allOf;
435
+ const ofKey = schemaPart.oneOf
436
+ ? "oneOf"
437
+ : schemaPart.anyOf
438
+ ? "anyOf"
439
+ : schemaPart.allOf
440
+ ? "allOf"
441
+ : undefined;
364
442
 
365
- if (maybeOf) {
366
- const items = maybeOf;
443
+ if (ofKey) {
444
+ const items = /** @type {Schema[]} */ (schemaPart[ofKey]);
367
445
 
368
446
  for (let i = 0; i < items.length; i++) {
369
447
  addedArguments += traverse(
@@ -371,7 +449,8 @@ const getArguments = (schema = webpackSchema) => {
371
449
  (items[i]),
372
450
  schemaPath,
373
451
  fullPath,
374
- inArray
452
+ inArray,
453
+ `/${ofKey}/${i}`
375
454
  );
376
455
  }
377
456
 
@@ -433,6 +512,15 @@ const cliAddedItems = new WeakMap();
433
512
  /** @typedef {string | number} Property */
434
513
 
435
514
  /**
515
+ * Whether a path segment would walk into the prototype chain.
516
+ * @param {string} name path segment
517
+ * @returns {boolean} true when the segment is unsafe to write through
518
+ */
519
+ const isUnsafeKey = (name) =>
520
+ name === "__proto__" || name === "constructor" || name === "prototype";
521
+
522
+ /**
523
+ * Gets object and property.
436
524
  * @param {ObjectConfiguration} config configuration
437
525
  * @param {string} schemaPath path in the config
438
526
  * @param {number | undefined} index index of value when multiple values are provided, otherwise undefined
@@ -447,6 +535,14 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
447
535
  for (const part of parts) {
448
536
  const isArray = part.endsWith("[]");
449
537
  const name = isArray ? part.slice(0, -2) : part;
538
+ if (isUnsafeKey(name)) {
539
+ return {
540
+ problem: {
541
+ type: "prototype-pollution-in-path",
542
+ path: parts.slice(0, i).join(".")
543
+ }
544
+ };
545
+ }
450
546
  let value = current[name];
451
547
  if (isArray) {
452
548
  if (value === undefined) {
@@ -493,6 +589,14 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
493
589
  current = value;
494
590
  i++;
495
591
  }
592
+ if (isUnsafeKey(property.endsWith("[]") ? property.slice(0, -2) : property)) {
593
+ return {
594
+ problem: {
595
+ type: "prototype-pollution-in-path",
596
+ path: parts.join(".")
597
+ }
598
+ };
599
+ }
496
600
  const value = current[property];
497
601
  if (property.endsWith("[]")) {
498
602
  const name = property.slice(0, -2);
@@ -533,6 +637,7 @@ const getObjectAndProperty = (config, schemaPath, index = 0) => {
533
637
  };
534
638
 
535
639
  /**
640
+ * Updates value using the provided config.
536
641
  * @param {ObjectConfiguration} config configuration
537
642
  * @param {string} schemaPath path in the config
538
643
  * @param {ParsedValue} value parsed value
@@ -552,6 +657,7 @@ const setValue = (config, schemaPath, value, index) => {
552
657
  };
553
658
 
554
659
  /**
660
+ * Process argument config.
555
661
  * @param {ArgumentConfig} argConfig processing instructions
556
662
  * @param {ObjectConfiguration} config configuration
557
663
  * @param {Value} value the value
@@ -579,6 +685,7 @@ const processArgumentConfig = (argConfig, config, value, index) => {
579
685
  };
580
686
 
581
687
  /**
688
+ * Gets expected value.
582
689
  * @param {ArgumentConfig} argConfig processing instructions
583
690
  * @returns {string | undefined} expected message
584
691
  */
@@ -606,6 +713,7 @@ const getExpectedValue = (argConfig) => {
606
713
  const DECIMAL_NUMBER_REGEXP = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;
607
714
 
608
715
  /**
716
+ * Parses value for argument config.
609
717
  * @param {ArgumentConfig} argConfig processing instructions
610
718
  * @param {Value} value the value
611
719
  * @returns {ParsedValue | undefined} parsed value
@@ -665,6 +773,7 @@ const parseValueForArgumentConfig = (argConfig, value) => {
665
773
  /** @typedef {Record<string, Value[]>} Values */
666
774
 
667
775
  /**
776
+ * Processes the provided arg.
668
777
  * @param {Flags} args object of arguments
669
778
  * @param {ObjectConfiguration} config configuration
670
779
  * @param {Values} values object with values
@@ -684,6 +793,7 @@ const processArguments = (args, config, values) => {
684
793
  continue;
685
794
  }
686
795
  /**
796
+ * Processes the provided value.
687
797
  * @param {Value} value value
688
798
  * @param {number | undefined} i index
689
799
  */
@@ -718,21 +828,26 @@ const processArguments = (args, config, values) => {
718
828
  };
719
829
 
720
830
  /**
831
+ * Checks whether this object is color supported.
721
832
  * @returns {boolean} true when colors supported, otherwise false
722
833
  */
723
834
  const isColorSupported = () => {
724
835
  const { env = {}, argv = [], platform = "" } = process;
725
836
 
726
- const isDisabled = "NO_COLOR" in env || argv.includes("--no-color");
727
- const isForced = "FORCE_COLOR" in env || argv.includes("--color");
837
+ // Read values instead of using `in`: Deno's and Bun's `process.env` honor
838
+ // property access but not the `in`/`has` trap, so `"X" in env` is unreliable.
839
+ const isDisabled = env.NO_COLOR !== undefined || argv.includes("--no-color");
840
+ const isForced = env.FORCE_COLOR !== undefined || argv.includes("--color");
728
841
  const isWindows = platform === "win32";
729
842
  const isDumbTerminal = env.TERM === "dumb";
730
843
 
731
844
  const isCompatibleTerminal = tty.isatty(1) && env.TERM && !isDumbTerminal;
732
845
 
733
846
  const isCI =
734
- "CI" in env &&
735
- ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env);
847
+ env.CI !== undefined &&
848
+ (env.GITHUB_ACTIONS !== undefined ||
849
+ env.GITLAB_CI !== undefined ||
850
+ env.CIRCLECI !== undefined);
736
851
 
737
852
  return (
738
853
  !isDisabled &&
@@ -741,6 +856,7 @@ const isColorSupported = () => {
741
856
  };
742
857
 
743
858
  /**
859
+ * Returns result.
744
860
  * @param {number} index index
745
861
  * @param {string} string string
746
862
  * @param {string} close close
@@ -761,6 +877,7 @@ const replaceClose = (
761
877
  ) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
762
878
 
763
879
  /**
880
+ * Returns result.
764
881
  * @param {number} index index to replace
765
882
  * @param {string} string string
766
883
  * @param {string} open open string
@@ -776,6 +893,7 @@ const clearBleed = (index, string, open, close, replace) =>
776
893
  /** @typedef {(value: EXPECTED_ANY) => string} PrintFunction */
777
894
 
778
895
  /**
896
+ * Returns function to create color.
779
897
  * @param {string} open open string
780
898
  * @param {string} close close string
781
899
  * @param {string=} replace extra replace
@@ -790,6 +908,7 @@ const filterEmpty =
790
908
  : "";
791
909
 
792
910
  /**
911
+ * Returns result.
793
912
  * @param {number} open open code
794
913
  * @param {number} close close code
795
914
  * @param {string=} replace extra replace
@@ -799,15 +918,18 @@ const init = (open, close, replace) =>
799
918
  filterEmpty(`\u001B[${open}m`, `\u001B[${close}m`, replace);
800
919
 
801
920
  /**
921
+ * Defines the colors type used by this module.
802
922
  * @typedef {{ reset: PrintFunction, bold: PrintFunction, dim: PrintFunction, italic: PrintFunction, underline: PrintFunction, inverse: PrintFunction, hidden: PrintFunction, strikethrough: PrintFunction, black: PrintFunction, red: PrintFunction, green: PrintFunction, yellow: PrintFunction, blue: PrintFunction, magenta: PrintFunction, cyan: PrintFunction, white: PrintFunction, gray: PrintFunction, bgBlack: PrintFunction, bgRed: PrintFunction, bgGreen: PrintFunction, bgYellow: PrintFunction, bgBlue: PrintFunction, bgMagenta: PrintFunction, bgCyan: PrintFunction, bgWhite: PrintFunction, blackBright: PrintFunction, redBright: PrintFunction, greenBright: PrintFunction, yellowBright: PrintFunction, blueBright: PrintFunction, magentaBright: PrintFunction, cyanBright: PrintFunction, whiteBright: PrintFunction, bgBlackBright: PrintFunction, bgRedBright: PrintFunction, bgGreenBright: PrintFunction, bgYellowBright: PrintFunction, bgBlueBright: PrintFunction, bgMagentaBright: PrintFunction, bgCyanBright: PrintFunction, bgWhiteBright: PrintFunction }} Colors
803
923
  */
804
924
 
805
925
  /**
926
+ * Defines the colors options type used by this module.
806
927
  * @typedef {object} ColorsOptions
807
928
  * @property {boolean=} useColor force use colors
808
929
  */
809
930
 
810
931
  /**
932
+ * Creates a colors from the provided colors option.
811
933
  * @param {ColorsOptions=} options options
812
934
  * @returns {Colors} colors
813
935
  */