@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- 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 +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- 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 +537 -139
- 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 +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- 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 +33 -30
- 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 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- 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 +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- 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 +123 -118
- 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 +52 -6
- 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 +302 -12
- 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 +612 -43
- 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/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- 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 +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -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 +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -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 +681 -367
- 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 +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- 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 +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- 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 +80 -52
- 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 +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -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 +49 -12
- 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 +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -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 +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- 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 +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- 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 +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- 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 +200 -50
- 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 +687 -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 +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- 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 +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- 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 +118 -7
- 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 +1173 -80
- 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 +11053 -3019
- 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
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const util = require("util");
|
|
9
|
+
const { version: WEBPACK_VERSION } = require("../../package.json");
|
|
9
10
|
const { WEBPACK_MODULE_TYPE_RUNTIME } = require("../ModuleTypeConstants");
|
|
10
11
|
const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
11
|
-
const formatLocation = require("../formatLocation");
|
|
12
12
|
const { LogType } = require("../logging/Logger");
|
|
13
13
|
const AggressiveSplittingPlugin = require("../optimize/AggressiveSplittingPlugin");
|
|
14
14
|
const SizeLimitsPlugin = require("../performance/SizeLimitsPlugin");
|
|
@@ -22,6 +22,7 @@ const {
|
|
|
22
22
|
compareSelect,
|
|
23
23
|
concatComparators
|
|
24
24
|
} = require("../util/comparators");
|
|
25
|
+
const formatLocation = require("../util/formatLocation");
|
|
25
26
|
const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
26
27
|
|
|
27
28
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
@@ -46,25 +47,29 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
46
47
|
/** @typedef {import("../Module")} Module */
|
|
47
48
|
/** @typedef {import("../Module").NameForCondition} NameForCondition */
|
|
48
49
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
50
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
49
51
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
50
52
|
/** @typedef {import("../ModuleProfile")} ModuleProfile */
|
|
51
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
53
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
52
54
|
/** @typedef {import("../serialization/AggregateErrorSerializer").AggregateError} AggregateError */
|
|
53
55
|
/** @typedef {import("../serialization/ErrorObjectSerializer").ErrorWithCause} ErrorWithCause */
|
|
54
56
|
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
55
57
|
|
|
56
58
|
/**
|
|
59
|
+
* Defines the shared type used by this module.
|
|
57
60
|
* @template T
|
|
58
61
|
* @typedef {import("../util/comparators").Comparator<T>} Comparator<T>
|
|
59
62
|
*/
|
|
60
63
|
|
|
61
64
|
/**
|
|
65
|
+
* Defines the group config type used by this module.
|
|
62
66
|
* @template I, G
|
|
63
67
|
* @typedef {import("../util/smartGrouping").GroupConfig<I, G>} GroupConfig
|
|
64
68
|
*/
|
|
65
69
|
|
|
66
70
|
/** @typedef {KnownStatsCompilation & Record<string, EXPECTED_ANY>} StatsCompilation */
|
|
67
71
|
/**
|
|
72
|
+
* Defines the known stats compilation type used by this module.
|
|
68
73
|
* @typedef {object} KnownStatsCompilation
|
|
69
74
|
* @property {EXPECTED_ANY=} env
|
|
70
75
|
* @property {string=} name
|
|
@@ -95,6 +100,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
95
100
|
|
|
96
101
|
/** @typedef {KnownStatsLogging & Record<string, EXPECTED_ANY>} StatsLogging */
|
|
97
102
|
/**
|
|
103
|
+
* Defines the known stats logging type used by this module.
|
|
98
104
|
* @typedef {object} KnownStatsLogging
|
|
99
105
|
* @property {StatsLoggingEntry[]} entries
|
|
100
106
|
* @property {number} filteredEntries
|
|
@@ -103,6 +109,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
103
109
|
|
|
104
110
|
/** @typedef {KnownStatsLoggingEntry & Record<string, EXPECTED_ANY>} StatsLoggingEntry */
|
|
105
111
|
/**
|
|
112
|
+
* Defines the known stats logging entry type used by this module.
|
|
106
113
|
* @typedef {object} KnownStatsLoggingEntry
|
|
107
114
|
* @property {string} type
|
|
108
115
|
* @property {string=} message
|
|
@@ -115,6 +122,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
115
122
|
/** @typedef {KnownStatsAsset & Record<string, EXPECTED_ANY>} StatsAsset */
|
|
116
123
|
/** @typedef {string[]} ChunkIdHints */
|
|
117
124
|
/**
|
|
125
|
+
* Defines the known stats asset type used by this module.
|
|
118
126
|
* @typedef {object} KnownStatsAsset
|
|
119
127
|
* @property {string} type
|
|
120
128
|
* @property {string} name
|
|
@@ -136,6 +144,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
136
144
|
|
|
137
145
|
/** @typedef {KnownStatsChunkGroup & Record<string, EXPECTED_ANY>} StatsChunkGroup */
|
|
138
146
|
/**
|
|
147
|
+
* Defines the known stats chunk group type used by this module.
|
|
139
148
|
* @typedef {object} KnownStatsChunkGroup
|
|
140
149
|
* @property {ChunkName=} name
|
|
141
150
|
* @property {ChunkId[]=} chunks
|
|
@@ -153,6 +162,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
153
162
|
/** @typedef {Module[]} ModuleIssuerPath */
|
|
154
163
|
/** @typedef {KnownStatsModule & Record<string, EXPECTED_ANY>} StatsModule */
|
|
155
164
|
/**
|
|
165
|
+
* Defines the known stats module type used by this module.
|
|
156
166
|
* @typedef {object} KnownStatsModule
|
|
157
167
|
* @property {string=} type
|
|
158
168
|
* @property {string=} moduleType
|
|
@@ -167,6 +177,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
167
177
|
* @property {number=} size
|
|
168
178
|
* @property {Record<string, number>=} sizes
|
|
169
179
|
* @property {boolean=} cacheable
|
|
180
|
+
* @property {string[]=} notCacheableReasons
|
|
170
181
|
* @property {boolean=} built
|
|
171
182
|
* @property {boolean=} codeGenerated
|
|
172
183
|
* @property {boolean=} buildTimeExecuted
|
|
@@ -197,6 +208,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
197
208
|
|
|
198
209
|
/** @typedef {KnownStatsProfile & Record<string, EXPECTED_ANY>} StatsProfile */
|
|
199
210
|
/**
|
|
211
|
+
* Defines the known stats profile type used by this module.
|
|
200
212
|
* @typedef {object} KnownStatsProfile
|
|
201
213
|
* @property {number} total
|
|
202
214
|
* @property {number} resolving
|
|
@@ -212,6 +224,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
212
224
|
|
|
213
225
|
/** @typedef {KnownStatsModuleIssuer & Record<string, EXPECTED_ANY>} StatsModuleIssuer */
|
|
214
226
|
/**
|
|
227
|
+
* Defines the known stats module issuer type used by this module.
|
|
215
228
|
* @typedef {object} KnownStatsModuleIssuer
|
|
216
229
|
* @property {string} identifier
|
|
217
230
|
* @property {string} name
|
|
@@ -221,6 +234,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
221
234
|
|
|
222
235
|
/** @typedef {KnownStatsModuleReason & Record<string, EXPECTED_ANY>} StatsModuleReason */
|
|
223
236
|
/**
|
|
237
|
+
* Defines the known stats module reason type used by this module.
|
|
224
238
|
* @typedef {object} KnownStatsModuleReason
|
|
225
239
|
* @property {string | null} moduleIdentifier
|
|
226
240
|
* @property {string | null} module
|
|
@@ -238,6 +252,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
238
252
|
|
|
239
253
|
/** @typedef {KnownStatsChunk & Record<string, EXPECTED_ANY>} StatsChunk */
|
|
240
254
|
/**
|
|
255
|
+
* Defines the known stats chunk type used by this module.
|
|
241
256
|
* @typedef {object} KnownStatsChunk
|
|
242
257
|
* @property {boolean} rendered
|
|
243
258
|
* @property {boolean} initial
|
|
@@ -264,6 +279,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
264
279
|
|
|
265
280
|
/** @typedef {KnownStatsChunkOrigin & Record<string, EXPECTED_ANY>} StatsChunkOrigin */
|
|
266
281
|
/**
|
|
282
|
+
* Defines the known stats chunk origin type used by this module.
|
|
267
283
|
* @typedef {object} KnownStatsChunkOrigin
|
|
268
284
|
* @property {string} module
|
|
269
285
|
* @property {string} moduleIdentifier
|
|
@@ -275,6 +291,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
275
291
|
|
|
276
292
|
/** @typedef {KnownStatsModuleTraceItem & Record<string, EXPECTED_ANY>} StatsModuleTraceItem */
|
|
277
293
|
/**
|
|
294
|
+
* Defines the known stats module trace item type used by this module.
|
|
278
295
|
* @typedef {object} KnownStatsModuleTraceItem
|
|
279
296
|
* @property {string=} originIdentifier
|
|
280
297
|
* @property {string=} originName
|
|
@@ -287,12 +304,14 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
287
304
|
|
|
288
305
|
/** @typedef {KnownStatsModuleTraceDependency & Record<string, EXPECTED_ANY>} StatsModuleTraceDependency */
|
|
289
306
|
/**
|
|
307
|
+
* Defines the known stats module trace dependency type used by this module.
|
|
290
308
|
* @typedef {object} KnownStatsModuleTraceDependency
|
|
291
309
|
* @property {string=} loc
|
|
292
310
|
*/
|
|
293
311
|
|
|
294
312
|
/** @typedef {KnownStatsError & Record<string, EXPECTED_ANY>} StatsError */
|
|
295
313
|
/**
|
|
314
|
+
* Defines the known stats error type used by this module.
|
|
296
315
|
* @typedef {object} KnownStatsError
|
|
297
316
|
* @property {string} message
|
|
298
317
|
* @property {string=} chunkName
|
|
@@ -315,6 +334,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
315
334
|
/** @typedef {Asset & { type: string, related: PreprocessedAsset[] | undefined }} PreprocessedAsset */
|
|
316
335
|
|
|
317
336
|
/**
|
|
337
|
+
* Defines the extractors by option type used by this module.
|
|
318
338
|
* @template T
|
|
319
339
|
* @template O
|
|
320
340
|
* @typedef {Record<string, (object: O, data: T, context: StatsFactoryContext, options: NormalizedStatsOptions, factory: StatsFactory) => void>} ExtractorsByOption
|
|
@@ -324,6 +344,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
324
344
|
/** @typedef {{ origin: Module, module: Module }} ModuleTrace */
|
|
325
345
|
|
|
326
346
|
/**
|
|
347
|
+
* Defines the simple extractors type used by this module.
|
|
327
348
|
* @typedef {object} SimpleExtractors
|
|
328
349
|
* @property {ExtractorsByOption<Compilation, StatsCompilation>} compilation
|
|
329
350
|
* @property {ExtractorsByOption<PreprocessedAsset, StatsAsset>} asset
|
|
@@ -344,6 +365,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
|
344
365
|
*/
|
|
345
366
|
|
|
346
367
|
/**
|
|
368
|
+
* Returns array of values.
|
|
347
369
|
* @template T
|
|
348
370
|
* @template I
|
|
349
371
|
* @param {Iterable<T>} items items to select from
|
|
@@ -362,6 +384,7 @@ const uniqueArray = (items, selector) => {
|
|
|
362
384
|
};
|
|
363
385
|
|
|
364
386
|
/**
|
|
387
|
+
* Unique ordered array.
|
|
365
388
|
* @template T
|
|
366
389
|
* @template I
|
|
367
390
|
* @param {Iterable<T>} items items to select from
|
|
@@ -373,12 +396,14 @@ const uniqueOrderedArray = (items, selector, comparator) =>
|
|
|
373
396
|
uniqueArray(items, selector).sort(comparator);
|
|
374
397
|
|
|
375
398
|
/**
|
|
399
|
+
* Defines the shared type used by this module.
|
|
376
400
|
* @template T
|
|
377
401
|
* @template R
|
|
378
402
|
* @typedef {{ [P in keyof T]: R }} MappedValues<T, R>
|
|
379
403
|
*/
|
|
380
404
|
|
|
381
405
|
/**
|
|
406
|
+
* Returns mapped object.
|
|
382
407
|
* @template {object} T
|
|
383
408
|
* @template {object} R
|
|
384
409
|
* @param {T} obj object to be mapped
|
|
@@ -395,9 +420,9 @@ const mapObject = (obj, fn) => {
|
|
|
395
420
|
};
|
|
396
421
|
|
|
397
422
|
/**
|
|
398
|
-
*
|
|
423
|
+
* Count with children.
|
|
399
424
|
* @param {Compilation} compilation the compilation
|
|
400
|
-
* @param {(compilation: Compilation, name: string) =>
|
|
425
|
+
* @param {(compilation: Compilation, name: string) => { length: number }} getItems get items
|
|
401
426
|
* @returns {number} total number
|
|
402
427
|
*/
|
|
403
428
|
const countWithChildren = (compilation, getItems) => {
|
|
@@ -730,7 +755,7 @@ const SIMPLE_EXTRACTORS = {
|
|
|
730
755
|
object.hash = compilation.hash;
|
|
731
756
|
},
|
|
732
757
|
version: (object) => {
|
|
733
|
-
object.version =
|
|
758
|
+
object.version = WEBPACK_VERSION;
|
|
734
759
|
},
|
|
735
760
|
env: (object, compilation, context, { _env }) => {
|
|
736
761
|
object.env = _env;
|
|
@@ -810,22 +835,24 @@ const SIMPLE_EXTRACTORS = {
|
|
|
810
835
|
}
|
|
811
836
|
|
|
812
837
|
object.assetsByChunkName = {};
|
|
813
|
-
for (const
|
|
814
|
-
|
|
815
|
-
|
|
838
|
+
for (const fileToChunks of [
|
|
839
|
+
compilationFileToChunks,
|
|
840
|
+
compilationAuxiliaryFileToChunks
|
|
816
841
|
]) {
|
|
817
|
-
for (const
|
|
818
|
-
const
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
842
|
+
for (const [file, chunks] of fileToChunks) {
|
|
843
|
+
for (const chunk of chunks) {
|
|
844
|
+
const name = chunk.name;
|
|
845
|
+
if (!name) continue;
|
|
846
|
+
if (
|
|
847
|
+
!Object.prototype.hasOwnProperty.call(
|
|
848
|
+
object.assetsByChunkName,
|
|
849
|
+
name
|
|
850
|
+
)
|
|
851
|
+
) {
|
|
852
|
+
object.assetsByChunkName[name] = [];
|
|
853
|
+
}
|
|
854
|
+
object.assetsByChunkName[name].push(file);
|
|
827
855
|
}
|
|
828
|
-
object.assetsByChunkName[name].push(file);
|
|
829
856
|
}
|
|
830
857
|
}
|
|
831
858
|
|
|
@@ -987,17 +1014,16 @@ const SIMPLE_EXTRACTORS = {
|
|
|
987
1014
|
const { type, cachedGetWarnings } = context;
|
|
988
1015
|
object.warningsCount = countWithChildren(compilation, (c, childType) => {
|
|
989
1016
|
if (
|
|
990
|
-
!warningsFilter &&
|
|
991
1017
|
/** @type {KnownNormalizedStatsOptions["warningsFilter"]} */
|
|
992
1018
|
(warningsFilter).length === 0
|
|
993
1019
|
) {
|
|
994
|
-
|
|
995
|
-
return /** @type {EXPECTED_ANY[]} */ (cachedGetWarnings(c));
|
|
1020
|
+
return cachedGetWarnings(c);
|
|
996
1021
|
}
|
|
997
1022
|
return factory
|
|
998
1023
|
.create(`${type}${childType}.warnings`, cachedGetWarnings(c), context)
|
|
999
1024
|
.filter(
|
|
1000
1025
|
/**
|
|
1026
|
+
* Handles the warnings count callback for this hook.
|
|
1001
1027
|
* @param {StatsError} warning warning
|
|
1002
1028
|
* @returns {boolean} result
|
|
1003
1029
|
*/
|
|
@@ -1122,6 +1148,7 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1122
1148
|
chunkGroupChildren &&
|
|
1123
1149
|
chunkGroup.getChildrenByOrders(moduleGraph, chunkGraph);
|
|
1124
1150
|
/**
|
|
1151
|
+
* Returns } Asset object.
|
|
1125
1152
|
* @param {string} name Name
|
|
1126
1153
|
* @returns {{ name: string, size: number }} Asset object
|
|
1127
1154
|
*/
|
|
@@ -1221,6 +1248,25 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1221
1248
|
},
|
|
1222
1249
|
performance: (object, { chunkGroup }) => {
|
|
1223
1250
|
object.isOverSizeLimit = SizeLimitsPlugin.isOverSizeLimit(chunkGroup);
|
|
1251
|
+
},
|
|
1252
|
+
chunkGroupResourceHints: (
|
|
1253
|
+
object,
|
|
1254
|
+
{ name, chunkGroup },
|
|
1255
|
+
{ compilation }
|
|
1256
|
+
) => {
|
|
1257
|
+
// SSR frameworks consume this to inject the initial-chunk +
|
|
1258
|
+
// URL-asset `<link>` tags into their server-rendered HTML without
|
|
1259
|
+
// having to walk the chunk graph themselves. Only entrypoints
|
|
1260
|
+
// carry hints; split-chunk / async chunk groups are skipped.
|
|
1261
|
+
if (!compilation.entrypoints.get(name)) return;
|
|
1262
|
+
|
|
1263
|
+
const ResourceHintPlugin = require("../prefetch/ResourceHintPlugin");
|
|
1264
|
+
|
|
1265
|
+
const hints =
|
|
1266
|
+
ResourceHintPlugin.getCompilationResolver(
|
|
1267
|
+
compilation
|
|
1268
|
+
).getEntrypointHints(name);
|
|
1269
|
+
if (hints.length > 0) object.resourceHints = hints;
|
|
1224
1270
|
}
|
|
1225
1271
|
},
|
|
1226
1272
|
module: {
|
|
@@ -1236,19 +1282,16 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1236
1282
|
for (const sourceType of module.getSourceTypes()) {
|
|
1237
1283
|
sizes[sourceType] = module.size(sourceType);
|
|
1238
1284
|
}
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
cached: !built && !codeGenerated
|
|
1250
|
-
};
|
|
1251
|
-
Object.assign(object, statsModule);
|
|
1285
|
+
// assign fields directly to avoid an intermediate object + copy per module
|
|
1286
|
+
object.type = "module";
|
|
1287
|
+
object.moduleType = module.type;
|
|
1288
|
+
object.layer = module.layer;
|
|
1289
|
+
object.size = module.size();
|
|
1290
|
+
object.sizes = sizes;
|
|
1291
|
+
object.built = built;
|
|
1292
|
+
object.codeGenerated = codeGenerated;
|
|
1293
|
+
object.buildTimeExecuted = buildTimeExecuted;
|
|
1294
|
+
object.cached = !built && !codeGenerated;
|
|
1252
1295
|
if (built || codeGenerated || options.cachedModules) {
|
|
1253
1296
|
Object.assign(
|
|
1254
1297
|
object,
|
|
@@ -1277,36 +1320,43 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1277
1320
|
const warnings = module.getWarnings();
|
|
1278
1321
|
const warningsCount =
|
|
1279
1322
|
warnings !== undefined ? countIterable(warnings) : 0;
|
|
1280
|
-
/** @type {
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1323
|
+
const { cacheable, notCacheableReasons } = /** @type {BuildInfo} */ (
|
|
1324
|
+
module.buildInfo
|
|
1325
|
+
);
|
|
1326
|
+
const preOrderIndex = /** @type {number} */ (
|
|
1327
|
+
moduleGraph.getPreOrderIndex(module)
|
|
1328
|
+
);
|
|
1329
|
+
const postOrderIndex = /** @type {number} */ (
|
|
1330
|
+
moduleGraph.getPostOrderIndex(module)
|
|
1331
|
+
);
|
|
1332
|
+
// assign fields directly to avoid an intermediate object + copy per module
|
|
1333
|
+
object.identifier = module.identifier();
|
|
1334
|
+
object.name = module.readableIdentifier(requestShortener);
|
|
1335
|
+
object.nameForCondition = module.nameForCondition();
|
|
1336
|
+
object.index = preOrderIndex;
|
|
1337
|
+
object.preOrderIndex = preOrderIndex;
|
|
1338
|
+
object.index2 = postOrderIndex;
|
|
1339
|
+
object.postOrderIndex = postOrderIndex;
|
|
1340
|
+
object.cacheable = cacheable;
|
|
1341
|
+
object.notCacheableReasons =
|
|
1342
|
+
notCacheableReasons &&
|
|
1343
|
+
notCacheableReasons.map(
|
|
1344
|
+
(request) => /** @type {string} */ (requestShortener.shorten(request))
|
|
1345
|
+
);
|
|
1346
|
+
object.optional = module.isOptional(moduleGraph);
|
|
1347
|
+
object.orphan =
|
|
1348
|
+
!type.endsWith("module.modules[].module$visible") &&
|
|
1349
|
+
compilation.chunkGraph.getNumberOfModuleChunks(module) === 0;
|
|
1350
|
+
object.dependent = rootModules ? !rootModules.has(module) : undefined;
|
|
1351
|
+
object.issuer = issuer && issuer.identifier();
|
|
1352
|
+
object.issuerName = issuer && issuer.readableIdentifier(requestShortener);
|
|
1353
|
+
object.issuerPath =
|
|
1354
|
+
issuer &&
|
|
1355
|
+
/** @type {StatsModuleIssuer[] | undefined} */
|
|
1356
|
+
(factory.create(`${type.slice(0, -8)}.issuerPath`, path, context));
|
|
1357
|
+
object.failed = errorsCount > 0;
|
|
1358
|
+
object.errors = errorsCount;
|
|
1359
|
+
object.warnings = warningsCount;
|
|
1310
1360
|
if (profile) {
|
|
1311
1361
|
object.profile = factory.create(
|
|
1312
1362
|
`${type.slice(0, -8)}.profile`,
|
|
@@ -1418,27 +1468,24 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1418
1468
|
},
|
|
1419
1469
|
profile: {
|
|
1420
1470
|
_: (object, profile) => {
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
dependencies: profile.additionalFactories
|
|
1440
|
-
};
|
|
1441
|
-
Object.assign(object, statsProfile);
|
|
1471
|
+
// assign fields directly to avoid an intermediate object + copy
|
|
1472
|
+
object.total =
|
|
1473
|
+
profile.factory +
|
|
1474
|
+
profile.restoring +
|
|
1475
|
+
profile.integration +
|
|
1476
|
+
profile.building +
|
|
1477
|
+
profile.storing;
|
|
1478
|
+
object.resolving = profile.factory;
|
|
1479
|
+
object.restoring = profile.restoring;
|
|
1480
|
+
object.building = profile.building;
|
|
1481
|
+
object.integration = profile.integration;
|
|
1482
|
+
object.storing = profile.storing;
|
|
1483
|
+
object.additionalResolving = profile.additionalFactories;
|
|
1484
|
+
object.additionalIntegration = profile.additionalIntegration;
|
|
1485
|
+
// TODO remove this in webpack 6
|
|
1486
|
+
object.factory = profile.factory;
|
|
1487
|
+
// TODO remove this in webpack 6
|
|
1488
|
+
object.dependencies = profile.additionalFactories;
|
|
1442
1489
|
}
|
|
1443
1490
|
},
|
|
1444
1491
|
moduleIssuer: {
|
|
@@ -1447,12 +1494,9 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1447
1494
|
const compilation = /** @type {Compilation} */ (context.compilation);
|
|
1448
1495
|
const { moduleGraph } = compilation;
|
|
1449
1496
|
const profile = moduleGraph.getProfile(module);
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
name: module.readableIdentifier(requestShortener)
|
|
1454
|
-
};
|
|
1455
|
-
Object.assign(object, statsModuleIssuer);
|
|
1497
|
+
// assign fields directly to avoid an intermediate object + copy per issuer
|
|
1498
|
+
object.identifier = module.identifier();
|
|
1499
|
+
object.name = module.readableIdentifier(requestShortener);
|
|
1456
1500
|
if (profile) {
|
|
1457
1501
|
object.profile = factory.create(`${type}.profile`, profile, context);
|
|
1458
1502
|
}
|
|
@@ -1466,31 +1510,26 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1466
1510
|
const dep = reason.dependency;
|
|
1467
1511
|
const moduleDep =
|
|
1468
1512
|
dep && dep instanceof ModuleDependency ? dep : undefined;
|
|
1469
|
-
|
|
1470
|
-
const
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
userRequest: (moduleDep && moduleDep.userRequest) || null
|
|
1490
|
-
};
|
|
1491
|
-
Object.assign(object, statsModuleReason);
|
|
1492
|
-
if (reason.dependency) {
|
|
1493
|
-
const locInfo = formatLocation(reason.dependency.loc);
|
|
1513
|
+
const { originModule, resolvedOriginModule } = reason;
|
|
1514
|
+
const originName = originModule
|
|
1515
|
+
? originModule.readableIdentifier(requestShortener)
|
|
1516
|
+
: null;
|
|
1517
|
+
// assign fields directly to avoid an intermediate object + copy per reason
|
|
1518
|
+
object.moduleIdentifier = originModule ? originModule.identifier() : null;
|
|
1519
|
+
object.module = originName;
|
|
1520
|
+
object.moduleName = originName;
|
|
1521
|
+
object.resolvedModuleIdentifier = resolvedOriginModule
|
|
1522
|
+
? resolvedOriginModule.identifier()
|
|
1523
|
+
: null;
|
|
1524
|
+
object.resolvedModule = resolvedOriginModule
|
|
1525
|
+
? resolvedOriginModule.readableIdentifier(requestShortener)
|
|
1526
|
+
: null;
|
|
1527
|
+
object.type = dep ? dep.type : null;
|
|
1528
|
+
object.active = reason.isActive(runtime);
|
|
1529
|
+
object.explanation = reason.explanation;
|
|
1530
|
+
object.userRequest = (moduleDep && moduleDep.userRequest) || null;
|
|
1531
|
+
if (dep) {
|
|
1532
|
+
const locInfo = formatLocation(dep.loc);
|
|
1494
1533
|
if (locInfo) {
|
|
1495
1534
|
object.loc = locInfo;
|
|
1496
1535
|
}
|
|
@@ -1509,29 +1548,26 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1509
1548
|
_: (object, chunk, { makePathsRelative, compilation: { chunkGraph } }) => {
|
|
1510
1549
|
const childIdByOrder = chunk.getChildIdsByOrders(chunkGraph);
|
|
1511
1550
|
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
runtime
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
childrenByOrder: childIdByOrder
|
|
1533
|
-
};
|
|
1534
|
-
Object.assign(object, statsChunk);
|
|
1551
|
+
// assign fields directly to avoid an intermediate object + copy per chunk
|
|
1552
|
+
object.rendered = chunk.rendered;
|
|
1553
|
+
object.initial = chunk.canBeInitial();
|
|
1554
|
+
object.entry = chunk.hasRuntime();
|
|
1555
|
+
object.recorded = AggressiveSplittingPlugin.wasChunkRecorded(chunk);
|
|
1556
|
+
object.reason = chunk.chunkReason;
|
|
1557
|
+
object.size = chunkGraph.getChunkModulesSize(chunk);
|
|
1558
|
+
object.sizes = chunkGraph.getChunkModulesSizes(chunk);
|
|
1559
|
+
object.names = chunk.name ? [chunk.name] : [];
|
|
1560
|
+
object.idHints = [...chunk.idNameHints];
|
|
1561
|
+
object.runtime =
|
|
1562
|
+
chunk.runtime === undefined
|
|
1563
|
+
? undefined
|
|
1564
|
+
: typeof chunk.runtime === "string"
|
|
1565
|
+
? [makePathsRelative(chunk.runtime)]
|
|
1566
|
+
: Array.from(chunk.runtime.sort(), makePathsRelative);
|
|
1567
|
+
object.files = [...chunk.files];
|
|
1568
|
+
object.auxiliaryFiles = [...chunk.auxiliaryFiles].sort(compareIds);
|
|
1569
|
+
object.hash = /** @type {string} */ (chunk.renderedHash);
|
|
1570
|
+
object.childrenByOrder = childIdByOrder;
|
|
1535
1571
|
},
|
|
1536
1572
|
ids: (object, chunk) => {
|
|
1537
1573
|
object.id = /** @type {ChunkId} */ (chunk.id);
|
|
@@ -1608,17 +1644,16 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1608
1644
|
},
|
|
1609
1645
|
chunkOrigin: {
|
|
1610
1646
|
_: (object, origin, context, { requestShortener }) => {
|
|
1611
|
-
|
|
1612
|
-
const
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
Object.assign(object, statsChunkOrigin);
|
|
1647
|
+
const originModule = origin.module;
|
|
1648
|
+
const identifier = originModule ? originModule.identifier() : "";
|
|
1649
|
+
// assign fields directly to avoid an intermediate object + copy per origin
|
|
1650
|
+
object.module = identifier;
|
|
1651
|
+
object.moduleIdentifier = identifier;
|
|
1652
|
+
object.moduleName = originModule
|
|
1653
|
+
? originModule.readableIdentifier(requestShortener)
|
|
1654
|
+
: "";
|
|
1655
|
+
object.loc = formatLocation(origin.loc);
|
|
1656
|
+
object.request = origin.request;
|
|
1622
1657
|
},
|
|
1623
1658
|
ids: (object, origin, { compilation: { chunkGraph } }) => {
|
|
1624
1659
|
object.moduleId = origin.module
|
|
@@ -1639,13 +1674,16 @@ const SIMPLE_EXTRACTORS = {
|
|
|
1639
1674
|
object.originName = origin.readableIdentifier(requestShortener);
|
|
1640
1675
|
object.moduleIdentifier = module.identifier();
|
|
1641
1676
|
object.moduleName = module.readableIdentifier(requestShortener);
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1677
|
+
/** @type {Set<Dependency>} */
|
|
1678
|
+
const dependencies = new Set();
|
|
1679
|
+
for (const c of moduleGraph.getIncomingConnections(module)) {
|
|
1680
|
+
if (c.resolvedOriginModule === origin && c.dependency) {
|
|
1681
|
+
dependencies.add(c.dependency);
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1645
1684
|
object.dependencies = factory.create(
|
|
1646
1685
|
`${type}.dependencies`,
|
|
1647
|
-
|
|
1648
|
-
([...new Set(dependencies)]),
|
|
1686
|
+
[...dependencies],
|
|
1649
1687
|
context
|
|
1650
1688
|
);
|
|
1651
1689
|
},
|
|
@@ -1697,17 +1735,50 @@ const FILTER_RESULTS = {
|
|
|
1697
1735
|
}
|
|
1698
1736
|
};
|
|
1699
1737
|
|
|
1738
|
+
// module sort selectors close over moduleGraph, so cache the built comparators per
|
|
1739
|
+
// moduleGraph (stable per compilation) instead of rebuilding them on every sort
|
|
1740
|
+
/** @type {WeakMap<ModuleGraph, Comparator<Module>[]>} */
|
|
1741
|
+
const modulesSorterCache = new WeakMap();
|
|
1742
|
+
|
|
1700
1743
|
/** @type {Record<string, (comparators: Comparator<Module>[], context: StatsFactoryContext) => void>} */
|
|
1701
1744
|
const MODULES_SORTER = {
|
|
1702
1745
|
_: (comparators, { compilation: { moduleGraph } }) => {
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1746
|
+
let cached = modulesSorterCache.get(moduleGraph);
|
|
1747
|
+
if (cached === undefined) {
|
|
1748
|
+
cached = [
|
|
1749
|
+
compareSelect((m) => moduleGraph.getDepth(m), compareNumbers),
|
|
1750
|
+
compareSelect((m) => moduleGraph.getPreOrderIndex(m), compareNumbers),
|
|
1751
|
+
compareSelect((m) => m.identifier(), compareIds)
|
|
1752
|
+
];
|
|
1753
|
+
modulesSorterCache.set(moduleGraph, cached);
|
|
1754
|
+
}
|
|
1755
|
+
comparators.push(...cached);
|
|
1708
1756
|
}
|
|
1709
1757
|
};
|
|
1710
1758
|
|
|
1759
|
+
// reason comparators use only pure selectors, so build them once instead of per
|
|
1760
|
+
// module.reasons sort (which runs once per module and otherwise thrashes the caches)
|
|
1761
|
+
/** @type {Comparator<ModuleGraphConnection>[]} */
|
|
1762
|
+
const MODULE_REASONS_COMPARATORS = [
|
|
1763
|
+
compareSelect((x) => x.originModule, compareModulesByIdentifier),
|
|
1764
|
+
compareSelect((x) => x.resolvedOriginModule, compareModulesByIdentifier),
|
|
1765
|
+
compareSelect(
|
|
1766
|
+
(x) => x.dependency,
|
|
1767
|
+
concatComparators(
|
|
1768
|
+
compareSelect(
|
|
1769
|
+
/**
|
|
1770
|
+
* Handles the callback for this hook.
|
|
1771
|
+
* @param {Dependency} x dependency
|
|
1772
|
+
* @returns {DependencyLocation} location
|
|
1773
|
+
*/
|
|
1774
|
+
(x) => x.loc,
|
|
1775
|
+
compareLocations
|
|
1776
|
+
),
|
|
1777
|
+
compareSelect((x) => x.type, compareIds)
|
|
1778
|
+
)
|
|
1779
|
+
)
|
|
1780
|
+
];
|
|
1781
|
+
|
|
1711
1782
|
/**
|
|
1712
1783
|
* @type {{
|
|
1713
1784
|
* "compilation.chunks": Record<string, (comparators: Comparator<Chunk>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void>,
|
|
@@ -1730,29 +1801,8 @@ const SORTERS = {
|
|
|
1730
1801
|
"chunk.modules": MODULES_SORTER,
|
|
1731
1802
|
"module.modules": MODULES_SORTER,
|
|
1732
1803
|
"module.reasons": {
|
|
1733
|
-
_: (comparators
|
|
1734
|
-
comparators.push(
|
|
1735
|
-
compareSelect((x) => x.originModule, compareModulesByIdentifier)
|
|
1736
|
-
);
|
|
1737
|
-
comparators.push(
|
|
1738
|
-
compareSelect((x) => x.resolvedOriginModule, compareModulesByIdentifier)
|
|
1739
|
-
);
|
|
1740
|
-
comparators.push(
|
|
1741
|
-
compareSelect(
|
|
1742
|
-
(x) => x.dependency,
|
|
1743
|
-
concatComparators(
|
|
1744
|
-
compareSelect(
|
|
1745
|
-
/**
|
|
1746
|
-
* @param {Dependency} x dependency
|
|
1747
|
-
* @returns {DependencyLocation} location
|
|
1748
|
-
*/
|
|
1749
|
-
(x) => x.loc,
|
|
1750
|
-
compareLocations
|
|
1751
|
-
),
|
|
1752
|
-
compareSelect((x) => x.type, compareIds)
|
|
1753
|
-
)
|
|
1754
|
-
)
|
|
1755
|
-
);
|
|
1804
|
+
_: (comparators) => {
|
|
1805
|
+
comparators.push(...MODULE_REASONS_COMPARATORS);
|
|
1756
1806
|
}
|
|
1757
1807
|
},
|
|
1758
1808
|
"chunk.origins": {
|
|
@@ -1771,11 +1821,13 @@ const SORTERS = {
|
|
|
1771
1821
|
};
|
|
1772
1822
|
|
|
1773
1823
|
/**
|
|
1824
|
+
* Defines the children type used by this module.
|
|
1774
1825
|
* @template T
|
|
1775
1826
|
* @typedef {T & { children?: Children<T>[] | undefined, filteredChildren?: number }} Children
|
|
1776
1827
|
*/
|
|
1777
1828
|
|
|
1778
1829
|
/**
|
|
1830
|
+
* Returns item size.
|
|
1779
1831
|
* @template T
|
|
1780
1832
|
* @param {Children<T>} item item
|
|
1781
1833
|
* @returns {number} item size
|
|
@@ -1791,6 +1843,7 @@ const getItemSize = (item) =>
|
|
|
1791
1843
|
: 1 + getTotalSize(item.children);
|
|
1792
1844
|
|
|
1793
1845
|
/**
|
|
1846
|
+
* Returns total size.
|
|
1794
1847
|
* @template T
|
|
1795
1848
|
* @param {Children<T>[]} children children
|
|
1796
1849
|
* @returns {number} total size
|
|
@@ -1804,6 +1857,7 @@ const getTotalSize = (children) => {
|
|
|
1804
1857
|
};
|
|
1805
1858
|
|
|
1806
1859
|
/**
|
|
1860
|
+
* Returns total items.
|
|
1807
1861
|
* @template T
|
|
1808
1862
|
* @param {Children<T>[]} children children
|
|
1809
1863
|
* @returns {number} total items
|
|
@@ -1822,6 +1876,7 @@ const getTotalItems = (children) => {
|
|
|
1822
1876
|
};
|
|
1823
1877
|
|
|
1824
1878
|
/**
|
|
1879
|
+
* Returns collapsed children.
|
|
1825
1880
|
* @template T
|
|
1826
1881
|
* @param {Children<T>[]} children children
|
|
1827
1882
|
* @returns {Children<T>[]} collapsed children
|
|
@@ -1847,6 +1902,7 @@ const collapse = (children) => {
|
|
|
1847
1902
|
};
|
|
1848
1903
|
|
|
1849
1904
|
/**
|
|
1905
|
+
* Returns result.
|
|
1850
1906
|
* @template T
|
|
1851
1907
|
* @param {Children<T>[]} itemsAndGroups item and groups
|
|
1852
1908
|
* @param {number} max max
|
|
@@ -1976,6 +2032,7 @@ const spaceLimited = (
|
|
|
1976
2032
|
};
|
|
1977
2033
|
|
|
1978
2034
|
/**
|
|
2035
|
+
* Errors space limit.
|
|
1979
2036
|
* @param {StatsError[]} errors errors
|
|
1980
2037
|
* @param {number} max max
|
|
1981
2038
|
* @returns {[StatsError[], number]} error space limit
|
|
@@ -2019,7 +2076,7 @@ const errorsSpaceLimit = (errors, max) => {
|
|
|
2019
2076
|
for (; i < errors.length; i++) {
|
|
2020
2077
|
const error = errors[i];
|
|
2021
2078
|
if (typeof error === "string" || !error.details) result.push(error);
|
|
2022
|
-
result.push({ ...error, details: "" });
|
|
2079
|
+
else result.push({ ...error, details: "" });
|
|
2023
2080
|
}
|
|
2024
2081
|
break;
|
|
2025
2082
|
} else if (fullLength === max) {
|
|
@@ -2028,7 +2085,7 @@ const errorsSpaceLimit = (errors, max) => {
|
|
|
2028
2085
|
for (; i < errors.length; i++) {
|
|
2029
2086
|
const error = errors[i];
|
|
2030
2087
|
if (typeof error === "string" || !error.details) result.push(error);
|
|
2031
|
-
result.push({ ...error, details: "" });
|
|
2088
|
+
else result.push({ ...error, details: "" });
|
|
2032
2089
|
}
|
|
2033
2090
|
break;
|
|
2034
2091
|
}
|
|
@@ -2039,6 +2096,7 @@ const errorsSpaceLimit = (errors, max) => {
|
|
|
2039
2096
|
};
|
|
2040
2097
|
|
|
2041
2098
|
/**
|
|
2099
|
+
* Returns } asset size.
|
|
2042
2100
|
* @template {{ size: number }} T
|
|
2043
2101
|
* @param {T[]} children children
|
|
2044
2102
|
* @param {T[]} assets assets
|
|
@@ -2055,6 +2113,7 @@ const assetGroup = (children, assets) => {
|
|
|
2055
2113
|
/** @typedef {{ size: number, sizes: Record<string, number> }} ModuleGroupBySizeResult */
|
|
2056
2114
|
|
|
2057
2115
|
/**
|
|
2116
|
+
* Returns size and sizes.
|
|
2058
2117
|
* @template {ModuleGroupBySizeResult} T
|
|
2059
2118
|
* @param {Children<T>[]} children children
|
|
2060
2119
|
* @param {KnownStatsModule[]} modules modules
|
|
@@ -2077,6 +2136,7 @@ const moduleGroup = (children, modules) => {
|
|
|
2077
2136
|
};
|
|
2078
2137
|
|
|
2079
2138
|
/**
|
|
2139
|
+
* Returns } reason group.
|
|
2080
2140
|
* @template {{ active: boolean }} T
|
|
2081
2141
|
* @param {Children<T>[]} children children
|
|
2082
2142
|
* @param {KnownStatsModuleReason[]} reasons reasons
|
|
@@ -2098,6 +2158,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
|
|
|
2098
2158
|
/** @typedef {{ type: string }} BaseGroup */
|
|
2099
2159
|
|
|
2100
2160
|
/**
|
|
2161
|
+
* Defines the base group with children type used by this module.
|
|
2101
2162
|
* @template T
|
|
2102
2163
|
* @typedef {BaseGroup & { children: T[], size: number }} BaseGroupWithChildren
|
|
2103
2164
|
*/
|
|
@@ -2105,6 +2166,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
|
|
|
2105
2166
|
/** @typedef {(name: string, asset: StatsAsset) => boolean} AssetFilterItemFn */
|
|
2106
2167
|
|
|
2107
2168
|
/**
|
|
2169
|
+
* Describes the assets groupers shape.
|
|
2108
2170
|
* @typedef {{
|
|
2109
2171
|
* _: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroup & { filteredChildren: number, size: number } | BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
2110
2172
|
* groupAssetsByInfo: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
@@ -2117,6 +2179,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
|
|
|
2117
2179
|
const ASSETS_GROUPERS = {
|
|
2118
2180
|
_: (groupConfigs, context, options) => {
|
|
2119
2181
|
/**
|
|
2182
|
+
* Processes the provided name.
|
|
2120
2183
|
* @param {keyof KnownStatsAsset} name name
|
|
2121
2184
|
* @param {boolean=} exclude need exclude?
|
|
2122
2185
|
*/
|
|
@@ -2196,6 +2259,7 @@ const ASSETS_GROUPERS = {
|
|
|
2196
2259
|
},
|
|
2197
2260
|
groupAssetsByInfo: (groupConfigs, _context, _options) => {
|
|
2198
2261
|
/**
|
|
2262
|
+
* Group by asset info flag.
|
|
2199
2263
|
* @param {string} name name
|
|
2200
2264
|
*/
|
|
2201
2265
|
const groupByAssetInfoFlag = (name) => {
|
|
@@ -2218,6 +2282,7 @@ const ASSETS_GROUPERS = {
|
|
|
2218
2282
|
},
|
|
2219
2283
|
groupAssetsByChunk: (groupConfigs, _context, _options) => {
|
|
2220
2284
|
/**
|
|
2285
|
+
* Processes the provided name.
|
|
2221
2286
|
* @param {keyof KnownStatsAsset} name name
|
|
2222
2287
|
*/
|
|
2223
2288
|
const groupByNames = (name) => {
|
|
@@ -2257,6 +2322,7 @@ const ASSETS_GROUPERS = {
|
|
|
2257
2322
|
};
|
|
2258
2323
|
|
|
2259
2324
|
/**
|
|
2325
|
+
* Describes the modules groupers shape.
|
|
2260
2326
|
* @typedef {{
|
|
2261
2327
|
* _: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren?: number, children?: KnownStatsModule[], size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
2262
2328
|
* excludeModules: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren: number, size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
@@ -2271,6 +2337,7 @@ const ASSETS_GROUPERS = {
|
|
|
2271
2337
|
const MODULES_GROUPERS = (type) => ({
|
|
2272
2338
|
_: (groupConfigs, context, options) => {
|
|
2273
2339
|
/**
|
|
2340
|
+
* Processes the provided name.
|
|
2274
2341
|
* @param {keyof KnownStatsModule} name name
|
|
2275
2342
|
* @param {string} type type
|
|
2276
2343
|
* @param {boolean=} exclude need exclude?
|
|
@@ -2452,6 +2519,7 @@ const MODULES_GROUPERS = (type) => ({
|
|
|
2452
2519
|
});
|
|
2453
2520
|
|
|
2454
2521
|
/**
|
|
2522
|
+
* Defines the module reasons groupers type used by this module.
|
|
2455
2523
|
* @typedef {{ groupReasonsByOrigin: (groupConfigs: GroupConfig<KnownStatsModuleReason, BaseGroup & { module: string, children: KnownStatsModuleReason[], active: boolean }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void }} ModuleReasonsGroupers
|
|
2456
2524
|
*/
|
|
2457
2525
|
|
|
@@ -2493,6 +2561,7 @@ const RESULT_GROUPERS = {
|
|
|
2493
2561
|
|
|
2494
2562
|
// remove a prefixed "!" that can be specified to reverse sort order
|
|
2495
2563
|
/**
|
|
2564
|
+
* Normalizes field key.
|
|
2496
2565
|
* @param {string} field a field name
|
|
2497
2566
|
* @returns {field} normalized field
|
|
2498
2567
|
*/
|
|
@@ -2505,6 +2574,7 @@ const normalizeFieldKey = (field) => {
|
|
|
2505
2574
|
|
|
2506
2575
|
// if a field is prefixed by a "!" reverse sort order
|
|
2507
2576
|
/**
|
|
2577
|
+
* Sorts order regular.
|
|
2508
2578
|
* @param {string} field a field name
|
|
2509
2579
|
* @returns {boolean} result
|
|
2510
2580
|
*/
|
|
@@ -2516,50 +2586,62 @@ const sortOrderRegular = (field) => {
|
|
|
2516
2586
|
};
|
|
2517
2587
|
|
|
2518
2588
|
/**
|
|
2589
|
+
* Returns zero.
|
|
2590
|
+
* @param {EXPECTED_ANY} a first
|
|
2591
|
+
* @param {EXPECTED_ANY} b second
|
|
2592
|
+
* @returns {-1 | 0 | 1} zero
|
|
2593
|
+
*/
|
|
2594
|
+
const noSort = (a, b) => 0;
|
|
2595
|
+
|
|
2596
|
+
/** @type {Map<string, (a: EXPECTED_ANY, b: EXPECTED_ANY) => 0 | 1 | -1>} */
|
|
2597
|
+
const sortByFieldCache = new Map();
|
|
2598
|
+
|
|
2599
|
+
/**
|
|
2600
|
+
* Returns comparators.
|
|
2519
2601
|
* @template T
|
|
2520
2602
|
* @param {string | false} field field name
|
|
2521
2603
|
* @returns {(a: T, b: T) => 0 | 1 | -1} comparators
|
|
2522
2604
|
*/
|
|
2523
2605
|
const sortByField = (field) => {
|
|
2524
|
-
if (!field)
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
const noSort = (a, b) => 0;
|
|
2531
|
-
return noSort;
|
|
2532
|
-
}
|
|
2606
|
+
if (!field) return noSort;
|
|
2607
|
+
|
|
2608
|
+
// memoize per field: the comparator (and its selector) is pure, so building it
|
|
2609
|
+
// once keeps compareSelect's cache warm instead of allocating a new entry per sort
|
|
2610
|
+
let sortFn = sortByFieldCache.get(field);
|
|
2611
|
+
if (sortFn !== undefined) return sortFn;
|
|
2533
2612
|
|
|
2534
2613
|
const fieldKey = normalizeFieldKey(field);
|
|
2535
2614
|
|
|
2536
|
-
|
|
2615
|
+
sortFn = compareSelect((m) => m[fieldKey], compareIds);
|
|
2537
2616
|
|
|
2538
2617
|
// if a field is prefixed with a "!" the sort is reversed!
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
if (!sortIsRegular) {
|
|
2618
|
+
if (!sortOrderRegular(field)) {
|
|
2542
2619
|
const oldSortFn = sortFn;
|
|
2543
2620
|
sortFn = (a, b) => oldSortFn(b, a);
|
|
2544
2621
|
}
|
|
2545
2622
|
|
|
2623
|
+
sortByFieldCache.set(field, sortFn);
|
|
2546
2624
|
return sortFn;
|
|
2547
2625
|
};
|
|
2548
2626
|
|
|
2549
2627
|
/**
|
|
2628
|
+
* Describes the asset sorters shape.
|
|
2550
2629
|
* @typedef {{
|
|
2551
2630
|
* assetsSort: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
2552
2631
|
* _: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
|
|
2553
2632
|
* }} AssetSorters
|
|
2554
2633
|
*/
|
|
2555
2634
|
|
|
2635
|
+
/** @type {Comparator<Asset>} */
|
|
2636
|
+
const compareAssetsByName = compareSelect((asset) => asset.name, compareIds);
|
|
2637
|
+
|
|
2556
2638
|
/** @type {AssetSorters} */
|
|
2557
2639
|
const ASSET_SORTERS = {
|
|
2558
2640
|
assetsSort: (comparators, context, { assetsSort }) => {
|
|
2559
2641
|
comparators.push(sortByField(assetsSort));
|
|
2560
2642
|
},
|
|
2561
2643
|
_: (comparators) => {
|
|
2562
|
-
comparators.push(
|
|
2644
|
+
comparators.push(compareAssetsByName);
|
|
2563
2645
|
}
|
|
2564
2646
|
};
|
|
2565
2647
|
|
|
@@ -2599,11 +2681,13 @@ const RESULT_SORTERS = {
|
|
|
2599
2681
|
};
|
|
2600
2682
|
|
|
2601
2683
|
/**
|
|
2684
|
+
* Defines the extract function type used by this module.
|
|
2602
2685
|
* @template T
|
|
2603
2686
|
* @typedef {T extends Record<string, Record<string, infer F>> ? F : never} ExtractFunction
|
|
2604
2687
|
*/
|
|
2605
2688
|
|
|
2606
2689
|
/**
|
|
2690
|
+
* Processes the provided config.
|
|
2607
2691
|
* @template {Record<string, Record<string, EXPECTED_ANY>>} T
|
|
2608
2692
|
* @param {T} config the config see above
|
|
2609
2693
|
* @param {NormalizedStatsOptions} options stats options
|
|
@@ -2658,11 +2742,13 @@ const ITEM_NAMES = {
|
|
|
2658
2742
|
};
|
|
2659
2743
|
|
|
2660
2744
|
/**
|
|
2745
|
+
* Defines the named object type used by this module.
|
|
2661
2746
|
* @template T
|
|
2662
2747
|
* @typedef {{ name: T }} NamedObject
|
|
2663
2748
|
*/
|
|
2664
2749
|
|
|
2665
2750
|
/**
|
|
2751
|
+
* Merges the provided values into a single result.
|
|
2666
2752
|
* @template {{ name: string }} T
|
|
2667
2753
|
* @param {T[]} items items to be merged
|
|
2668
2754
|
* @returns {NamedObject<T>} an object
|
|
@@ -2688,7 +2774,7 @@ const PLUGIN_NAME = "DefaultStatsFactoryPlugin";
|
|
|
2688
2774
|
|
|
2689
2775
|
class DefaultStatsFactoryPlugin {
|
|
2690
2776
|
/**
|
|
2691
|
-
*
|
|
2777
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
2692
2778
|
* @param {Compiler} compiler the compiler instance
|
|
2693
2779
|
* @returns {void}
|
|
2694
2780
|
*/
|
|
@@ -2697,6 +2783,7 @@ class DefaultStatsFactoryPlugin {
|
|
|
2697
2783
|
compilation.hooks.statsFactory.tap(
|
|
2698
2784
|
PLUGIN_NAME,
|
|
2699
2785
|
/**
|
|
2786
|
+
* Handles the callback logic for this hook.
|
|
2700
2787
|
* @param {StatsFactory} stats stats factory
|
|
2701
2788
|
* @param {NormalizedStatsOptions} options stats options
|
|
2702
2789
|
*/
|
|
@@ -2758,6 +2845,7 @@ class DefaultStatsFactoryPlugin {
|
|
|
2758
2845
|
.tap(
|
|
2759
2846
|
PLUGIN_NAME,
|
|
2760
2847
|
/**
|
|
2848
|
+
* Handles the callback logic for this hook.
|
|
2761
2849
|
* @param {Compilation} comp compilation
|
|
2762
2850
|
* @param {StatsFactoryContext} options options
|
|
2763
2851
|
* @returns {StatsFactory | undefined} stats factory
|