@depup/webpack 5.106.0-depup.0 → 5.109.0-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 (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
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
  */
@@ -16,6 +16,7 @@ const browserslist = require("browserslist");
16
16
  const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
17
17
 
18
18
  /**
19
+ * Returns selected browsers.
19
20
  * @param {string | null | undefined} input input string
20
21
  * @param {string} context the context directory
21
22
  * @returns {string[] | undefined} selected browsers
@@ -58,6 +59,7 @@ const load = (input, context) => {
58
59
  };
59
60
 
60
61
  /**
62
+ * Returns target properties.
61
63
  * @param {string[]} browsers supported browsers list
62
64
  * @returns {EcmaTargetProperties & PlatformTargetProperties & ApiTargetProperties} target properties
63
65
  */
@@ -118,6 +120,44 @@ const resolve = (browsers) => {
118
120
  kaios: [2, 5],
119
121
  node: [6, 0]
120
122
  }),
123
+ let: rawChecker({
124
+ chrome: 49,
125
+ and_chr: 49,
126
+ edge: 12,
127
+ firefox: 44,
128
+ and_ff: 44,
129
+ // ie: Not supported
130
+ opera: 36,
131
+ op_mob: 36,
132
+ safari: [10, 0],
133
+ ios_saf: [10, 0],
134
+ samsung: [5, 0],
135
+ android: 49,
136
+ and_qq: [10, 4],
137
+ baidu: [13, 18],
138
+ and_uc: [12, 12],
139
+ kaios: [2, 5],
140
+ node: [6, 0]
141
+ }),
142
+ logicalAssignment: rawChecker({
143
+ chrome: 85,
144
+ and_chr: 85,
145
+ edge: 85,
146
+ firefox: 79,
147
+ and_ff: 79,
148
+ // ie: Not supported,
149
+ opera: 71,
150
+ op_mob: 60,
151
+ safari: 14,
152
+ ios_saf: 14,
153
+ samsung: [14, 0],
154
+ android: 85,
155
+ and_qq: [14, 9],
156
+ baidu: [13, 52],
157
+ and_uc: [15, 5],
158
+ kaios: [3, 0],
159
+ node: [15, 0]
160
+ }),
121
161
  methodShorthand: rawChecker({
122
162
  chrome: 47,
123
163
  and_chr: 47,
@@ -315,6 +355,62 @@ const resolve = (browsers) => {
315
355
  kaios: [3, 0],
316
356
  node: 14
317
357
  }),
358
+ symbol: rawChecker({
359
+ chrome: 38,
360
+ and_chr: 38,
361
+ edge: 12,
362
+ firefox: 36,
363
+ and_ff: 36,
364
+ // ie: Not supported,
365
+ opera: 25,
366
+ op_mob: 25,
367
+ safari: 9,
368
+ ios_saf: 9,
369
+ samsung: [3, 0],
370
+ android: 38,
371
+ and_qq: [10, 4],
372
+ and_uc: [12, 12],
373
+ kaios: [2, 5],
374
+ node: [0, 12]
375
+ }),
376
+ hasOwn: rawChecker({
377
+ chrome: 93,
378
+ and_chr: 93,
379
+ edge: 93,
380
+ firefox: 92,
381
+ and_ff: 92,
382
+ // ie: Not supported,
383
+ opera: 79,
384
+ op_mob: 66,
385
+ safari: [15, 4],
386
+ ios_saf: [15, 4],
387
+ samsung: 17,
388
+ android: 93,
389
+ // and_qq: Not supported
390
+ // baidu: Not supported
391
+ // and_uc: Not supported
392
+ // kaios: Not supported
393
+ node: [16, 9]
394
+ }),
395
+ spread: rawChecker({
396
+ chrome: 60,
397
+ and_chr: 60,
398
+ edge: 79,
399
+ firefox: 55,
400
+ and_ff: 55,
401
+ // ie: Not supported,
402
+ opera: 47,
403
+ op_mob: 44,
404
+ safari: [11, 1],
405
+ ios_saf: [11, 3],
406
+ samsung: [8, 2],
407
+ android: 60,
408
+ and_qq: [13, 1],
409
+ // baidu: Not supported
410
+ and_uc: [15, 5],
411
+ kaios: [3, 0],
412
+ node: [8, 3]
413
+ }),
318
414
  templateLiteral: rawChecker({
319
415
  chrome: 41,
320
416
  and_chr: 41,
@@ -353,6 +449,25 @@ const resolve = (browsers) => {
353
449
  kaios: 3,
354
450
  node: [7, 6]
355
451
  }),
452
+ generator: rawChecker({
453
+ chrome: 39,
454
+ and_chr: 39,
455
+ edge: 13,
456
+ firefox: 26,
457
+ and_ff: 26,
458
+ // ie: Not supported,
459
+ opera: 26,
460
+ op_mob: 26,
461
+ safari: 10,
462
+ ios_saf: 10,
463
+ samsung: [3, 4],
464
+ android: 39,
465
+ and_qq: [10, 4],
466
+ baidu: [7, 12],
467
+ and_uc: [12, 12],
468
+ kaios: [2, 5],
469
+ node: 4
470
+ }),
356
471
  /* eslint-enable camelcase */
357
472
  browser: browserProperty,
358
473
  electron: false,
@@ -362,6 +477,27 @@ const resolve = (browsers) => {
362
477
  webworker: false,
363
478
 
364
479
  document: browserProperty,
480
+ modulePreload:
481
+ browserProperty &&
482
+ /* eslint-disable camelcase */
483
+ rawChecker({
484
+ chrome: 66,
485
+ and_chr: 66,
486
+ edge: 79,
487
+ firefox: 115,
488
+ and_ff: 115,
489
+ opera: 53,
490
+ op_mob: 47,
491
+ safari: 17,
492
+ ios_saf: 17,
493
+ samsung: [9, 0],
494
+ android: 66,
495
+ and_qq: [13, 1],
496
+ baidu: [13, 18],
497
+ and_uc: [15, 5],
498
+ kaios: [3, 1]
499
+ }),
500
+ /* eslint-enable camelcase */
365
501
  fetchWasm: browserProperty,
366
502
  global: nodeProperty,
367
503
  importScripts: false,
@@ -378,6 +514,11 @@ const resolve = (browsers) => {
378
514
  rawChecker({
379
515
  node: [22, 16]
380
516
  }),
517
+ nodeBuiltinModuleGetter:
518
+ nodeProperty &&
519
+ rawChecker({
520
+ node: [22, 3]
521
+ }),
381
522
  require: nodeProperty
382
523
  };
383
524
  };