@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.
- package/README.md +9 -11
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +498 -127
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +15 -0
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +104 -26
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +29 -3
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +43 -7
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +591 -41
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +12 -26
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +682 -368
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +25 -2
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +54 -6
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +663 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +97 -6
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1117 -79
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +8608 -1159
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -36,6 +36,7 @@ const DATA_URI_CONTENT_LENGTH = 16;
|
|
|
36
36
|
const MAX_MODULE_IDENTIFIER_LENGTH = 80;
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
|
+
* Returns if n is 1, singular, else plural.
|
|
39
40
|
* @param {number} n a number
|
|
40
41
|
* @param {string} singular singular
|
|
41
42
|
* @param {string} plural plural
|
|
@@ -44,6 +45,7 @@ const MAX_MODULE_IDENTIFIER_LENGTH = 80;
|
|
|
44
45
|
const plural = (n, singular, plural) => (n === 1 ? singular : plural);
|
|
45
46
|
|
|
46
47
|
/**
|
|
48
|
+
* Returns text.
|
|
47
49
|
* @param {Record<string, number>} sizes sizes by source type
|
|
48
50
|
* @param {StatsPrinterContext} options options
|
|
49
51
|
* @returns {string | undefined} text
|
|
@@ -58,6 +60,7 @@ const printSizes = (sizes, { formatSize = (n) => `${n}` }) => {
|
|
|
58
60
|
};
|
|
59
61
|
|
|
60
62
|
/**
|
|
63
|
+
* Gets resource name.
|
|
61
64
|
* @param {string | null} resource resource
|
|
62
65
|
* @returns {string} resource name for display
|
|
63
66
|
*/
|
|
@@ -75,6 +78,7 @@ const getResourceName = (resource) => {
|
|
|
75
78
|
};
|
|
76
79
|
|
|
77
80
|
/**
|
|
81
|
+
* Returns prefix and module name.
|
|
78
82
|
* @param {string} name module name
|
|
79
83
|
* @returns {[string, string]} prefix and module name
|
|
80
84
|
*/
|
|
@@ -99,6 +103,7 @@ const getModuleName = (name) => {
|
|
|
99
103
|
};
|
|
100
104
|
|
|
101
105
|
/**
|
|
106
|
+
* Returns joined string.
|
|
102
107
|
* @param {string} str string
|
|
103
108
|
* @param {(item: string) => string} fn function to apply to each line
|
|
104
109
|
* @returns {string} joined string
|
|
@@ -106,12 +111,14 @@ const getModuleName = (name) => {
|
|
|
106
111
|
const mapLines = (str, fn) => str.split("\n").map(fn).join("\n");
|
|
107
112
|
|
|
108
113
|
/**
|
|
114
|
+
* Returns number as two digit string, leading 0.
|
|
109
115
|
* @param {number} n a number
|
|
110
116
|
* @returns {string} number as two digit string, leading 0
|
|
111
117
|
*/
|
|
112
118
|
const twoDigit = (n) => (n >= 10 ? `${n}` : `0${n}`);
|
|
113
119
|
|
|
114
120
|
/**
|
|
121
|
+
* Checks whether this object is valid id.
|
|
115
122
|
* @param {string | number | null} id an id
|
|
116
123
|
* @returns {id is string | number} is i
|
|
117
124
|
*/
|
|
@@ -124,6 +131,7 @@ const isValidId = (id) => {
|
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
/**
|
|
134
|
+
* Returns string representation of list.
|
|
127
135
|
* @template T
|
|
128
136
|
* @param {T[] | undefined} list of items
|
|
129
137
|
* @param {number} count number of items to show
|
|
@@ -133,28 +141,33 @@ const moreCount = (list, count) =>
|
|
|
133
141
|
list && list.length > 0 ? `+ ${count}` : `${count}`;
|
|
134
142
|
|
|
135
143
|
/**
|
|
144
|
+
* Defines the with required type used by this module.
|
|
136
145
|
* @template T
|
|
137
146
|
* @template {keyof T} K
|
|
138
147
|
* @typedef {{ [P in K]-?: T[P] }} WithRequired
|
|
139
148
|
*/
|
|
140
149
|
|
|
141
150
|
/**
|
|
151
|
+
* Defines the define stats printer context type used by this module.
|
|
142
152
|
* @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
|
|
143
153
|
* @typedef {StatsPrinterContextWithExtra & WithRequired<StatsPrinterContext, "compilation" | RequiredStatsPrinterContextKeys>} DefineStatsPrinterContext
|
|
144
154
|
*/
|
|
145
155
|
|
|
146
156
|
/**
|
|
157
|
+
* Defines the simple printer type used by this module.
|
|
147
158
|
* @template T
|
|
148
159
|
* @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
|
|
149
160
|
* @typedef {(thing: Exclude<T, undefined>, context: DefineStatsPrinterContext<RequiredStatsPrinterContextKeys>, printer: StatsPrinter) => string | undefined} SimplePrinter
|
|
150
161
|
*/
|
|
151
162
|
|
|
152
163
|
/**
|
|
164
|
+
* Defines the unpacked type used by this module.
|
|
153
165
|
* @template T
|
|
154
166
|
* @typedef {T extends (infer U)[] ? U : T} Unpacked
|
|
155
167
|
*/
|
|
156
168
|
|
|
157
169
|
/**
|
|
170
|
+
* Defines the property name type used by this module.
|
|
158
171
|
* @template {object} O
|
|
159
172
|
* @template {keyof O} K
|
|
160
173
|
* @template {string} B
|
|
@@ -162,6 +175,7 @@ const moreCount = (list, count) =>
|
|
|
162
175
|
*/
|
|
163
176
|
|
|
164
177
|
/**
|
|
178
|
+
* Defines the array property name type used by this module.
|
|
165
179
|
* @template {object} O
|
|
166
180
|
* @template {keyof O} K
|
|
167
181
|
* @template {string} B
|
|
@@ -169,6 +183,7 @@ const moreCount = (list, count) =>
|
|
|
169
183
|
*/
|
|
170
184
|
|
|
171
185
|
/**
|
|
186
|
+
* Defines the exclamation type used by this module.
|
|
172
187
|
* @template {object} O
|
|
173
188
|
* @template {string} K
|
|
174
189
|
* @template {string} E
|
|
@@ -176,6 +191,7 @@ const moreCount = (list, count) =>
|
|
|
176
191
|
*/
|
|
177
192
|
|
|
178
193
|
/**
|
|
194
|
+
* Defines the shared type used by this module.
|
|
179
195
|
* @template {object} O
|
|
180
196
|
* @template {string} B
|
|
181
197
|
* @template {string} [R=B]
|
|
@@ -184,6 +200,7 @@ const moreCount = (list, count) =>
|
|
|
184
200
|
*/
|
|
185
201
|
|
|
186
202
|
/**
|
|
203
|
+
* Defines the shared type used by this module.
|
|
187
204
|
* @typedef {Printers<KnownStatsCompilation, "compilation"> &
|
|
188
205
|
* { ["compilation.summary!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
|
|
189
206
|
* { ["compilation.errorsInChildren!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
|
|
@@ -406,6 +423,7 @@ const COMPILATION_SIMPLE_PRINTERS = {
|
|
|
406
423
|
};
|
|
407
424
|
|
|
408
425
|
/**
|
|
426
|
+
* Defines the shared type used by this module.
|
|
409
427
|
* @typedef {Printers<KnownStatsAsset, "asset"> &
|
|
410
428
|
* Printers<KnownStatsAsset["info"], "asset.info"> &
|
|
411
429
|
* Exclamation<KnownStatsAsset, "asset.separator", "asset"> &
|
|
@@ -467,6 +485,7 @@ const ASSET_SIMPLE_PRINTERS = {
|
|
|
467
485
|
};
|
|
468
486
|
|
|
469
487
|
/**
|
|
488
|
+
* Defines the shared type used by this module.
|
|
470
489
|
* @typedef {Printers<KnownStatsModule, "module"> &
|
|
471
490
|
* Exclamation<KnownStatsModule, "module.separator", "module"> &
|
|
472
491
|
* { ["module.filteredChildren"]?: SimplePrinter<number, "module"> } &
|
|
@@ -489,8 +508,18 @@ const MODULE_SIMPLE_PRINTERS = {
|
|
|
489
508
|
"module.chunks[]": (id, { formatChunkId }) => formatChunkId(id),
|
|
490
509
|
"module.depth": (depth, { formatFlag }) =>
|
|
491
510
|
depth !== null ? formatFlag(`depth ${depth}`) : undefined,
|
|
492
|
-
"module.cacheable": (cacheable, { formatFlag, red }) =>
|
|
493
|
-
cacheable === false
|
|
511
|
+
"module.cacheable": (cacheable, { formatFlag, red, module }) =>
|
|
512
|
+
cacheable === false
|
|
513
|
+
? red(
|
|
514
|
+
formatFlag(
|
|
515
|
+
module.notCacheableReasons && module.notCacheableReasons.length > 0
|
|
516
|
+
? `not cacheable: ${module.notCacheableReasons.join(", ")}`
|
|
517
|
+
: "not cacheable"
|
|
518
|
+
)
|
|
519
|
+
)
|
|
520
|
+
: undefined,
|
|
521
|
+
// rendered as part of the "module.cacheable" flag
|
|
522
|
+
"module.notCacheableReasons": () => undefined,
|
|
494
523
|
"module.orphan": (orphan, { formatFlag, yellow }) =>
|
|
495
524
|
orphan ? yellow(formatFlag("orphan")) : undefined,
|
|
496
525
|
// "module.runtime": (runtime, { formatFlag, yellow }) =>
|
|
@@ -588,6 +617,7 @@ const MODULE_SIMPLE_PRINTERS = {
|
|
|
588
617
|
};
|
|
589
618
|
|
|
590
619
|
/**
|
|
620
|
+
* Defines the module issuer printers type used by this module.
|
|
591
621
|
* @typedef {Printers<KnownStatsModuleIssuer, "moduleIssuer"> & Printers<KnownStatsModuleIssuer["profile"], "moduleIssuer.profile", "moduleIssuer">} ModuleIssuerPrinters
|
|
592
622
|
*/
|
|
593
623
|
|
|
@@ -598,6 +628,7 @@ const MODULE_ISSUER_PRINTERS = {
|
|
|
598
628
|
};
|
|
599
629
|
|
|
600
630
|
/**
|
|
631
|
+
* Defines the module reasons printers type used by this module.
|
|
601
632
|
* @typedef {Printers<KnownStatsModuleReason, "moduleReason"> & { ["moduleReason.filteredChildren"]?: SimplePrinter<number, "moduleReason"> }} ModuleReasonsPrinters
|
|
602
633
|
*/
|
|
603
634
|
|
|
@@ -652,6 +683,7 @@ const MODULE_PROFILE_PRINTERS = {
|
|
|
652
683
|
};
|
|
653
684
|
|
|
654
685
|
/**
|
|
686
|
+
* Defines the shared type used by this module.
|
|
655
687
|
* @typedef {Exclamation<KnownStatsChunkGroup, "chunkGroup.kind", "chunkGroupKind"> &
|
|
656
688
|
* Exclamation<KnownStatsChunkGroup, "chunkGroup.separator", "chunkGroup"> &
|
|
657
689
|
* Printers<KnownStatsChunkGroup, "chunkGroup"> &
|
|
@@ -716,6 +748,7 @@ const CHUNK_GROUP_PRINTERS = {
|
|
|
716
748
|
};
|
|
717
749
|
|
|
718
750
|
/**
|
|
751
|
+
* Defines the shared type used by this module.
|
|
719
752
|
* @typedef {Printers<KnownStatsChunk, "chunk"> &
|
|
720
753
|
* { ["chunk.childrenByOrder[].type"]: SimplePrinter<string, "chunk"> } &
|
|
721
754
|
* { ["chunk.childrenByOrder[].children[]"]: SimplePrinter<ChunkId, "chunk"> } &
|
|
@@ -778,6 +811,7 @@ const CHUNK_PRINTERS = {
|
|
|
778
811
|
};
|
|
779
812
|
|
|
780
813
|
/**
|
|
814
|
+
* Defines the shared type used by this module.
|
|
781
815
|
* @typedef {Printers<KnownStatsError, "error"> &
|
|
782
816
|
* { ["error.filteredDetails"]?: SimplePrinter<number, "error"> } &
|
|
783
817
|
* Exclamation<KnownStatsError, "error.separator", "error">} ErrorPrinters
|
|
@@ -822,6 +856,7 @@ const ERROR_PRINTERS = {
|
|
|
822
856
|
};
|
|
823
857
|
|
|
824
858
|
/**
|
|
859
|
+
* Defines the shared type used by this module.
|
|
825
860
|
* @typedef {Printers<KnownStatsLoggingEntry, `loggingEntry(${LogTypeEnum}).loggingEntry`> &
|
|
826
861
|
* { ["loggingEntry(clear).loggingEntry"]?: SimplePrinter<KnownStatsLoggingEntry, "logging"> } &
|
|
827
862
|
* { ["loggingEntry.trace[]"]?: SimplePrinter<Exclude<KnownStatsLoggingEntry["trace"], undefined>[number], "logging"> } &
|
|
@@ -1178,6 +1213,7 @@ const SIMPLE_ITEMS_JOINER = {
|
|
|
1178
1213
|
};
|
|
1179
1214
|
|
|
1180
1215
|
/**
|
|
1216
|
+
* Returns result.
|
|
1181
1217
|
* @param {Item[]} items items
|
|
1182
1218
|
* @returns {string} result
|
|
1183
1219
|
*/
|
|
@@ -1188,6 +1224,7 @@ const joinOneLine = (items) =>
|
|
|
1188
1224
|
.join(" ");
|
|
1189
1225
|
|
|
1190
1226
|
/**
|
|
1227
|
+
* Returns result.
|
|
1191
1228
|
* @param {Item[]} items items
|
|
1192
1229
|
* @returns {string} result
|
|
1193
1230
|
*/
|
|
@@ -1235,6 +1272,7 @@ const joinInBrackets = (items) => {
|
|
|
1235
1272
|
};
|
|
1236
1273
|
|
|
1237
1274
|
/**
|
|
1275
|
+
* Returns result.
|
|
1238
1276
|
* @param {string} str a string
|
|
1239
1277
|
* @param {string} prefix prefix
|
|
1240
1278
|
* @param {boolean=} noPrefixInFirstLine need prefix in the first line?
|
|
@@ -1248,6 +1286,7 @@ const indent = (str, prefix, noPrefixInFirstLine) => {
|
|
|
1248
1286
|
};
|
|
1249
1287
|
|
|
1250
1288
|
/**
|
|
1289
|
+
* Join explicit new line.
|
|
1251
1290
|
* @param {(false | Item)[]} items items
|
|
1252
1291
|
* @param {string} indenter indenter
|
|
1253
1292
|
* @returns {string} result
|
|
@@ -1274,12 +1313,14 @@ const joinExplicitNewLine = (items, indenter) => {
|
|
|
1274
1313
|
};
|
|
1275
1314
|
|
|
1276
1315
|
/**
|
|
1316
|
+
* Returns joiner.
|
|
1277
1317
|
* @param {boolean} error is an error
|
|
1278
1318
|
* @returns {SimpleElementJoiner} joiner
|
|
1279
1319
|
*/
|
|
1280
1320
|
const joinError =
|
|
1281
1321
|
(error) =>
|
|
1282
1322
|
/**
|
|
1323
|
+
* Handles the callback logic for this hook.
|
|
1283
1324
|
* @param {Item[]} items items
|
|
1284
1325
|
* @param {StatsPrinterContextWithExtra} ctx context
|
|
1285
1326
|
* @returns {string} result
|
|
@@ -1447,11 +1488,13 @@ const AVAILABLE_COLORS = {
|
|
|
1447
1488
|
};
|
|
1448
1489
|
|
|
1449
1490
|
/**
|
|
1491
|
+
* Defines the tail type used by this module.
|
|
1450
1492
|
* @template T
|
|
1451
1493
|
* @typedef {T extends [infer Head, ...infer Tail] ? Tail : undefined} Tail
|
|
1452
1494
|
*/
|
|
1453
1495
|
|
|
1454
1496
|
/**
|
|
1497
|
+
* Defines the tail parameters type used by this module.
|
|
1455
1498
|
* @template {(...args: EXPECTED_ANY[]) => EXPECTED_ANY} T
|
|
1456
1499
|
* @typedef {T extends (firstArg: EXPECTED_ANY, ...rest: infer R) => EXPECTED_ANY ? R : never} TailParameters
|
|
1457
1500
|
*/
|
|
@@ -1477,7 +1520,7 @@ const AVAILABLE_FORMATS = {
|
|
|
1477
1520
|
(oversize ? yellow : green)(filename),
|
|
1478
1521
|
formatFlag: (flag) => `[${flag}]`,
|
|
1479
1522
|
formatLayer: (layer) => `(in ${layer})`,
|
|
1480
|
-
formatSize: require("../
|
|
1523
|
+
formatSize: require("../util/formatSize"),
|
|
1481
1524
|
formatDateTime: (dateTime, { bold }) => {
|
|
1482
1525
|
const d = new Date(dateTime);
|
|
1483
1526
|
const x = twoDigit;
|
|
@@ -1538,6 +1581,7 @@ const AVAILABLE_FORMATS = {
|
|
|
1538
1581
|
message = message.replace(
|
|
1539
1582
|
regExp,
|
|
1540
1583
|
/**
|
|
1584
|
+
* Handles the format callback for this hook.
|
|
1541
1585
|
* @param {string} match match
|
|
1542
1586
|
* @param {string} content content
|
|
1543
1587
|
* @returns {string} result
|
|
@@ -1556,6 +1600,7 @@ const RESULT_MODIFIER = {
|
|
|
1556
1600
|
};
|
|
1557
1601
|
|
|
1558
1602
|
/**
|
|
1603
|
+
* Creates an order from the provided array.
|
|
1559
1604
|
* @param {string[]} array array
|
|
1560
1605
|
* @param {string[]} preferredOrder preferred order
|
|
1561
1606
|
* @returns {string[]} result
|
|
@@ -1585,7 +1630,7 @@ const PLUGIN_NAME = "DefaultStatsPrinterPlugin";
|
|
|
1585
1630
|
|
|
1586
1631
|
class DefaultStatsPrinterPlugin {
|
|
1587
1632
|
/**
|
|
1588
|
-
*
|
|
1633
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
1589
1634
|
* @param {Compiler} compiler the compiler instance
|
|
1590
1635
|
* @returns {void}
|
|
1591
1636
|
*/
|
|
@@ -1626,6 +1671,7 @@ class DefaultStatsPrinterPlugin {
|
|
|
1626
1671
|
}\u001B[39m\u001B[22m`;
|
|
1627
1672
|
} else {
|
|
1628
1673
|
/**
|
|
1674
|
+
* Returns str string.
|
|
1629
1675
|
* @param {string} str string
|
|
1630
1676
|
* @returns {string} str string
|
|
1631
1677
|
*/
|
|
@@ -1653,8 +1699,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1653
1699
|
Object.keys(COMPILATION_SIMPLE_PRINTERS)
|
|
1654
1700
|
)) {
|
|
1655
1701
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1656
|
-
/** @type {
|
|
1657
|
-
(COMPILATION_SIMPLE_PRINTERS
|
|
1702
|
+
/** @type {NonNullable<CompilationSimplePrinters[keyof CompilationSimplePrinters]>} */
|
|
1703
|
+
(COMPILATION_SIMPLE_PRINTERS[key])(
|
|
1658
1704
|
obj,
|
|
1659
1705
|
/** @type {DefineStatsPrinterContext<"compilation">} */
|
|
1660
1706
|
(ctx),
|
|
@@ -1681,8 +1727,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1681
1727
|
Object.keys(MODULE_SIMPLE_PRINTERS)
|
|
1682
1728
|
)) {
|
|
1683
1729
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1684
|
-
/** @type {EXPECTED_ANY} */
|
|
1685
|
-
(MODULE_SIMPLE_PRINTERS
|
|
1730
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "module">} */
|
|
1731
|
+
(MODULE_SIMPLE_PRINTERS[key])(
|
|
1686
1732
|
obj,
|
|
1687
1733
|
/** @type {DefineStatsPrinterContext<"module">} */
|
|
1688
1734
|
(ctx),
|
|
@@ -1709,8 +1755,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1709
1755
|
Object.keys(MODULE_REASON_PRINTERS)
|
|
1710
1756
|
)) {
|
|
1711
1757
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1712
|
-
/** @type {EXPECTED_ANY} */
|
|
1713
|
-
(MODULE_REASON_PRINTERS
|
|
1758
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "moduleReason">} */
|
|
1759
|
+
(MODULE_REASON_PRINTERS[key])(
|
|
1714
1760
|
obj,
|
|
1715
1761
|
/** @type {DefineStatsPrinterContext<"moduleReason">} */
|
|
1716
1762
|
(ctx),
|
|
@@ -1737,8 +1783,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1737
1783
|
Object.keys(CHUNK_GROUP_PRINTERS)
|
|
1738
1784
|
)) {
|
|
1739
1785
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1740
|
-
/** @type {EXPECTED_ANY} */
|
|
1741
|
-
(CHUNK_GROUP_PRINTERS
|
|
1786
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "chunkGroupKind" | "chunkGroup">} */
|
|
1787
|
+
(CHUNK_GROUP_PRINTERS[key])(
|
|
1742
1788
|
obj,
|
|
1743
1789
|
/** @type {DefineStatsPrinterContext<"chunkGroupKind" | "chunkGroup">} */
|
|
1744
1790
|
(ctx),
|
|
@@ -1751,8 +1797,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1751
1797
|
Object.keys(CHUNK_PRINTERS)
|
|
1752
1798
|
)) {
|
|
1753
1799
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1754
|
-
/** @type {EXPECTED_ANY} */
|
|
1755
|
-
(CHUNK_PRINTERS
|
|
1800
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "chunk">} */
|
|
1801
|
+
(CHUNK_PRINTERS[key])(
|
|
1756
1802
|
obj,
|
|
1757
1803
|
/** @type {DefineStatsPrinterContext<"chunk">} */
|
|
1758
1804
|
(ctx),
|
|
@@ -1765,8 +1811,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1765
1811
|
Object.keys(ERROR_PRINTERS)
|
|
1766
1812
|
)) {
|
|
1767
1813
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1768
|
-
/** @type {EXPECTED_ANY} */
|
|
1769
|
-
(ERROR_PRINTERS
|
|
1814
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "error">} */
|
|
1815
|
+
(ERROR_PRINTERS[key])(
|
|
1770
1816
|
obj,
|
|
1771
1817
|
/** @type {DefineStatsPrinterContext<"error">} */
|
|
1772
1818
|
(ctx),
|
|
@@ -1779,8 +1825,8 @@ class DefaultStatsPrinterPlugin {
|
|
|
1779
1825
|
Object.keys(LOG_ENTRY_PRINTERS)
|
|
1780
1826
|
)) {
|
|
1781
1827
|
stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1782
|
-
/** @type {EXPECTED_ANY} */
|
|
1783
|
-
(LOG_ENTRY_PRINTERS
|
|
1828
|
+
/** @type {SimplePrinter<EXPECTED_ANY, "logging">} */
|
|
1829
|
+
(LOG_ENTRY_PRINTERS[key])(
|
|
1784
1830
|
obj,
|
|
1785
1831
|
/** @type {DefineStatsPrinterContext<"logging">} */
|
|
1786
1832
|
(ctx),
|
|
@@ -18,10 +18,11 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
18
18
|
/** @typedef {import("../Module")} Module */
|
|
19
19
|
/** @typedef {import("../ModuleGraph").ModuleProfile} ModuleProfile */
|
|
20
20
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
21
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
21
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
22
22
|
/** @typedef {import("../util/comparators").Comparator<EXPECTED_ANY>} Comparator */
|
|
23
23
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
24
24
|
/**
|
|
25
|
+
* Defines the group config type used by this module.
|
|
25
26
|
* @template T, R
|
|
26
27
|
* @typedef {import("../util/smartGrouping").GroupConfig<T, R>} GroupConfig
|
|
27
28
|
*/
|
|
@@ -42,6 +43,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
42
43
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
|
|
43
44
|
|
|
44
45
|
/**
|
|
46
|
+
* Defines the known stats factory context type used by this module.
|
|
45
47
|
* @typedef {object} KnownStatsFactoryContext
|
|
46
48
|
* @property {string} type
|
|
47
49
|
* @property {Compilation} compilation
|
|
@@ -59,12 +61,14 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
59
61
|
// StatsLogging StatsLoggingEntry
|
|
60
62
|
|
|
61
63
|
/**
|
|
64
|
+
* Defines the stats object type used by this module.
|
|
62
65
|
* @template T
|
|
63
66
|
* @template F
|
|
64
67
|
* @typedef {T extends Compilation ? StatsCompilation : T extends ChunkGroupInfoWithName ? StatsChunkGroup : T extends Chunk ? StatsChunk : T extends OriginRecord ? StatsChunkOrigin : T extends Module ? StatsModule : T extends ModuleGraphConnection ? StatsModuleReason : T extends Asset ? StatsAsset : T extends ModuleTrace ? StatsModuleTraceItem : T extends Dependency ? StatsModuleTraceDependency : T extends Error ? StatsError : T extends ModuleProfile ? StatsProfile : F} StatsObject
|
|
65
68
|
*/
|
|
66
69
|
|
|
67
70
|
/**
|
|
71
|
+
* Defines the created object type used by this module.
|
|
68
72
|
* @template T
|
|
69
73
|
* @template F
|
|
70
74
|
* @typedef {T extends ChunkGroupInfoWithName[] ? Record<string, StatsObject<ChunkGroupInfoWithName, F>> : T extends (infer V)[] ? StatsObject<V, F>[] : StatsObject<T, F>} CreatedObject
|
|
@@ -76,6 +80,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
76
80
|
/** @typedef {EXPECTED_ANY} Result */
|
|
77
81
|
|
|
78
82
|
/**
|
|
83
|
+
* Defines the stats factory hooks type used by this module.
|
|
79
84
|
* @typedef {object} StatsFactoryHooks
|
|
80
85
|
* @property {HookMap<SyncBailHook<[ObjectForExtract, FactoryData, StatsFactoryContext], void>>} extract
|
|
81
86
|
* @property {HookMap<SyncBailHook<[FactoryDataItem, StatsFactoryContext, number, number], boolean | void>>} filter
|
|
@@ -91,6 +96,7 @@ const smartGrouping = require("../util/smartGrouping");
|
|
|
91
96
|
*/
|
|
92
97
|
|
|
93
98
|
/**
|
|
99
|
+
* Represents the stats factory runtime component.
|
|
94
100
|
* @template T
|
|
95
101
|
* @typedef {Map<string, T[]>} Caches
|
|
96
102
|
*/
|
|
@@ -125,14 +131,16 @@ class StatsFactory {
|
|
|
125
131
|
});
|
|
126
132
|
const hooks = this.hooks;
|
|
127
133
|
this._caches =
|
|
128
|
-
/** @type {{ [Key in keyof StatsFactoryHooks]: Map<string,
|
|
134
|
+
/** @type {{ [Key in keyof StatsFactoryHooks]: StatsFactoryHooks[Key] extends HookMap<infer H> ? Map<string, H[]> : never }} */ ({});
|
|
129
135
|
for (const key of Object.keys(hooks)) {
|
|
130
136
|
this._caches[/** @type {keyof StatsFactoryHooks} */ (key)] = new Map();
|
|
131
137
|
}
|
|
138
|
+
/** @type {boolean} */
|
|
132
139
|
this._inCreate = false;
|
|
133
140
|
}
|
|
134
141
|
|
|
135
142
|
/**
|
|
143
|
+
* Get all level hooks.
|
|
136
144
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
137
145
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
138
146
|
* @param {HM} hookMap hook map
|
|
@@ -159,9 +167,10 @@ class StatsFactory {
|
|
|
159
167
|
}
|
|
160
168
|
|
|
161
169
|
/**
|
|
170
|
+
* Returns hook.
|
|
162
171
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
163
172
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
164
|
-
* @template {H extends import("tapable").Hook<
|
|
173
|
+
* @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
|
|
165
174
|
* @param {HM} hookMap hook map
|
|
166
175
|
* @param {Caches<H>} cache cache
|
|
167
176
|
* @param {string} type type
|
|
@@ -177,14 +186,16 @@ class StatsFactory {
|
|
|
177
186
|
}
|
|
178
187
|
|
|
179
188
|
/**
|
|
189
|
+
* For each level waterfall.
|
|
180
190
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} HM
|
|
181
191
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
192
|
+
* @template [D=EXPECTED_ANY]
|
|
182
193
|
* @param {HM} hookMap hook map
|
|
183
194
|
* @param {Caches<H>} cache cache
|
|
184
195
|
* @param {string} type type
|
|
185
|
-
* @param {
|
|
186
|
-
* @param {(hook: H,
|
|
187
|
-
* @returns {
|
|
196
|
+
* @param {D} data data
|
|
197
|
+
* @param {(hook: H, data: D) => D} fn fn
|
|
198
|
+
* @returns {D} data
|
|
188
199
|
* @private
|
|
189
200
|
*/
|
|
190
201
|
_forEachLevelWaterfall(hookMap, cache, type, data, fn) {
|
|
@@ -195,16 +206,17 @@ class StatsFactory {
|
|
|
195
206
|
}
|
|
196
207
|
|
|
197
208
|
/**
|
|
209
|
+
* For each level filter.
|
|
198
210
|
* @template {StatsFactoryHooks[keyof StatsFactoryHooks]} T
|
|
199
211
|
* @template {T extends HookMap<infer H> ? H : never} H
|
|
200
|
-
* @template
|
|
212
|
+
* @template [D=EXPECTED_ANY]
|
|
201
213
|
* @param {T} hookMap hook map
|
|
202
214
|
* @param {Caches<H>} cache cache
|
|
203
215
|
* @param {string} type type
|
|
204
|
-
* @param {
|
|
205
|
-
* @param {(hook: H, item:
|
|
216
|
+
* @param {D[]} items items
|
|
217
|
+
* @param {(hook: H, item: D, idx: number, i: number) => boolean | void} fn fn
|
|
206
218
|
* @param {boolean} forceClone force clone
|
|
207
|
-
* @returns {
|
|
219
|
+
* @returns {D[]} result for each level
|
|
208
220
|
* @private
|
|
209
221
|
*/
|
|
210
222
|
_forEachLevelFilter(hookMap, cache, type, items, fn, forceClone) {
|
|
@@ -225,6 +237,7 @@ class StatsFactory {
|
|
|
225
237
|
}
|
|
226
238
|
|
|
227
239
|
/**
|
|
240
|
+
* Returns created object.
|
|
228
241
|
* @template FactoryData
|
|
229
242
|
* @template FallbackCreatedObject
|
|
230
243
|
* @param {string} type type
|
|
@@ -248,6 +261,7 @@ class StatsFactory {
|
|
|
248
261
|
}
|
|
249
262
|
|
|
250
263
|
/**
|
|
264
|
+
* Returns created object.
|
|
251
265
|
* @private
|
|
252
266
|
* @template FactoryData
|
|
253
267
|
* @template FallbackCreatedObject
|
|
@@ -296,23 +310,30 @@ class StatsFactory {
|
|
|
296
310
|
false
|
|
297
311
|
);
|
|
298
312
|
|
|
299
|
-
//
|
|
313
|
+
// reuse one item context; create() spreads it synchronously, so mutating
|
|
314
|
+
// `_index`/the name key between items is safe and skips a per-item spread
|
|
315
|
+
/** @type {StatsFactoryContext} */
|
|
316
|
+
const itemContext = { ...context };
|
|
317
|
+
const itemNameType = `${type}[]`;
|
|
318
|
+
/** @type {string | void} */
|
|
319
|
+
let prevItemName;
|
|
300
320
|
let resultItems = items2.map((item, i) => {
|
|
301
|
-
|
|
302
|
-
const itemContext = {
|
|
303
|
-
...context,
|
|
304
|
-
_index: i
|
|
305
|
-
};
|
|
321
|
+
itemContext._index = i;
|
|
306
322
|
|
|
307
323
|
// run getItemName
|
|
308
324
|
const itemName = this._forEachLevel(
|
|
309
325
|
this.hooks.getItemName,
|
|
310
326
|
this._caches.getItemName,
|
|
311
|
-
|
|
327
|
+
itemNameType,
|
|
312
328
|
(h) => h.call(item, itemContext)
|
|
313
329
|
);
|
|
330
|
+
// drop a previous item's name key before adding this one's
|
|
331
|
+
if (prevItemName !== undefined && prevItemName !== itemName) {
|
|
332
|
+
delete itemContext[prevItemName];
|
|
333
|
+
}
|
|
314
334
|
if (itemName) itemContext[itemName] = item;
|
|
315
|
-
|
|
335
|
+
prevItemName = itemName;
|
|
336
|
+
const innerType = itemName ? `${type}[].${itemName}` : itemNameType;
|
|
316
337
|
|
|
317
338
|
// run getItemFactory
|
|
318
339
|
const itemFactory =
|
|
@@ -21,12 +21,14 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
21
21
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
+
* Defines the printed element type used by this module.
|
|
24
25
|
* @typedef {object} PrintedElement
|
|
25
26
|
* @property {string} element
|
|
26
27
|
* @property {string | undefined} content
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
30
|
/**
|
|
31
|
+
* Defines the known stats printer context type used by this module.
|
|
30
32
|
* @typedef {object} KnownStatsPrinterContext
|
|
31
33
|
* @property {string=} type
|
|
32
34
|
* @property {StatsCompilation=} compilation
|
|
@@ -47,6 +49,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
47
49
|
/** @typedef {(value: string | number) => string} ColorFunction */
|
|
48
50
|
|
|
49
51
|
/**
|
|
52
|
+
* Defines the known stats printer color functions type used by this module.
|
|
50
53
|
* @typedef {object} KnownStatsPrinterColorFunctions
|
|
51
54
|
* @property {ColorFunction=} bold
|
|
52
55
|
* @property {ColorFunction=} yellow
|
|
@@ -57,6 +60,7 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
57
60
|
*/
|
|
58
61
|
|
|
59
62
|
/**
|
|
63
|
+
* Defines the known stats printer formatters type used by this module.
|
|
60
64
|
* @typedef {object} KnownStatsPrinterFormatters
|
|
61
65
|
* @property {(file: string, oversize?: boolean) => string=} formatFilename
|
|
62
66
|
* @property {(id: string | number) => string=} formatModuleId
|
|
@@ -69,11 +73,18 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
69
73
|
* @property {(message: string) => string=} formatError
|
|
70
74
|
*/
|
|
71
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Extracts the inner hook type held by a `HookMap`.
|
|
78
|
+
* @template T
|
|
79
|
+
* @typedef {T extends HookMap<infer H> ? H : never} HookMapHook
|
|
80
|
+
*/
|
|
81
|
+
|
|
72
82
|
/** @typedef {KnownStatsPrinterColorFunctions & KnownStatsPrinterFormatters & KnownStatsPrinterContext & Record<string, EXPECTED_ANY>} StatsPrinterContext */
|
|
73
83
|
/** @typedef {StatsPrinterContext & Required<KnownStatsPrinterColorFunctions> & Required<KnownStatsPrinterFormatters> & { type: string }} StatsPrinterContextWithExtra */
|
|
74
84
|
/** @typedef {EXPECTED_ANY} PrintObject */
|
|
75
85
|
|
|
76
86
|
/**
|
|
87
|
+
* Represents the stats printer runtime component.
|
|
77
88
|
* @typedef {object} StatsPrintHooks
|
|
78
89
|
* @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], void>>} sortElements
|
|
79
90
|
* @property {HookMap<SyncBailHook<[PrintedElement[], StatsPrinterContext], string | undefined | void>>} printElements
|
|
@@ -102,8 +113,9 @@ class StatsPrinter {
|
|
|
102
113
|
print: new HookMap(() => new SyncBailHook(["object", "context"])),
|
|
103
114
|
result: new HookMap(() => new SyncWaterfallHook(["result", "context"]))
|
|
104
115
|
});
|
|
105
|
-
/** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string,
|
|
116
|
+
/** @type {Map<StatsPrintHooks[keyof StatsPrintHooks], Map<string, HookMapHook<StatsPrintHooks[keyof StatsPrintHooks]>[]>>} */
|
|
106
117
|
this._levelHookCache = new Map();
|
|
118
|
+
/** @type {boolean} */
|
|
107
119
|
this._inPrint = false;
|
|
108
120
|
}
|
|
109
121
|
|
|
@@ -144,7 +156,7 @@ class StatsPrinter {
|
|
|
144
156
|
* @private
|
|
145
157
|
* @template {StatsPrintHooks[keyof StatsPrintHooks]} HM
|
|
146
158
|
* @template {HM extends HookMap<infer H> ? H : never} H
|
|
147
|
-
* @template {H extends import("tapable").Hook<
|
|
159
|
+
* @template {H extends import("tapable").Hook<infer A, infer R> ? R : never} R
|
|
148
160
|
* @param {HM} hookMap hook map
|
|
149
161
|
* @param {string} type type
|
|
150
162
|
* @param {(hooK: H) => R | undefined | void} fn fn
|
|
@@ -176,6 +188,7 @@ class StatsPrinter {
|
|
|
176
188
|
}
|
|
177
189
|
|
|
178
190
|
/**
|
|
191
|
+
* Returns printed result.
|
|
179
192
|
* @param {string} type The type
|
|
180
193
|
* @param {PrintObject} object Object to print
|
|
181
194
|
* @param {StatsPrinterContext=} baseContext The base context
|
|
@@ -195,6 +208,7 @@ class StatsPrinter {
|
|
|
195
208
|
}
|
|
196
209
|
|
|
197
210
|
/**
|
|
211
|
+
* Returns printed result.
|
|
198
212
|
* @private
|
|
199
213
|
* @param {string} type type
|
|
200
214
|
* @param {PrintObject} object object
|