webpack 5.112.0 → 5.112.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/webpack.js +13 -7
- package/lib/Compilation.js +152 -60
- package/lib/Compiler.js +12 -25
- package/lib/asset/AssetBytesGenerator.js +14 -6
- package/lib/asset/AssetBytesParser.js +10 -8
- package/lib/asset/AssetGenerator.js +36 -48
- package/lib/asset/AssetModule.js +11 -0
- package/lib/asset/AssetModulesPlugin.js +5 -4
- package/lib/asset/AssetParser.js +8 -8
- package/lib/asset/AssetSourceGenerator.js +16 -8
- package/lib/asset/AssetSourceParser.js +10 -8
- package/lib/asset/WebManifestGenerator.js +11 -6
- package/lib/asset/WebManifestParser.js +3 -3
- package/lib/async-modules/AsyncModuleHelpers.js +8 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +7 -2
- package/lib/cache/CacheFacade.js +1 -1
- package/lib/cache/PackFileCacheStrategy.js +6 -10
- package/lib/cache/ResolverCachePlugin.js +58 -8
- package/lib/config/WebpackOptionsApply.js +8 -28
- package/lib/config/cli.js +9 -6
- package/lib/config/defaults.js +24 -13
- package/lib/config/getClaimedAssetTypes.js +2 -2
- package/lib/config/target.js +1 -1
- package/lib/context/ContextModule.js +1 -1
- package/lib/context/ContextModuleFactory.js +1 -1
- package/lib/context/ContextReplacementPlugin.js +3 -9
- package/lib/css/CssGenerator.js +40 -37
- package/lib/css/CssModule.js +10 -0
- package/lib/css/CssModulesPlugin.js +2 -2
- package/lib/css/CssParser.js +33 -32
- package/lib/css/conventions.js +1 -1
- package/lib/css/data.js +224 -219
- package/lib/css/syntax-parser.js +1159 -298
- package/lib/css/syntax-printer.js +90 -35
- package/lib/debug/ProfilingPlugin.js +65 -43
- package/lib/define/DefinePlugin.js +10 -15
- package/lib/define/DotenvPlugin.js +10 -6
- package/lib/define/EnvironmentPlugin.js +4 -2
- package/lib/dependencies/amd/AMDDefineDependencyParserPlugin.js +1 -2
- package/lib/dependencies/amd/AMDRequireDependenciesBlockParserPlugin.js +4 -1
- package/lib/dependencies/commonjs/CommonJsExportRequireDependency.js +1 -4
- package/lib/dependencies/commonjs/CommonJsExportsParserPlugin.js +18 -33
- package/lib/dependencies/commonjs/CommonJsImportsParserPlugin.js +1 -3
- package/lib/dependencies/commonjs/CommonJsObjectExportDependency.js +4 -4
- package/lib/dependencies/commonjs/CommonJsPlugin.js +2 -5
- package/lib/dependencies/commonjs/RequireEnsureDependenciesBlockParserPlugin.js +4 -1
- package/lib/dependencies/context/ImportMetaContextDependencyParserPlugin.js +1 -2
- package/lib/dependencies/context/ImportMetaGlobDependencyParserPlugin.js +4 -7
- package/lib/dependencies/context/ImportMetaGlobHelpers.js +8 -10
- package/lib/dependencies/core/CachedConstDependency.js +9 -6
- package/lib/dependencies/css/CssIcssExportDependency.js +6 -7
- package/lib/dependencies/css/CssIcssImportDependency.js +1 -3
- package/lib/dependencies/css/CssUrlDependency.js +2 -6
- package/lib/dependencies/esm/ESMDetectionParserPlugin.js +2 -4
- package/lib/dependencies/esm/ESMExportExpressionDependency.js +2 -2
- package/lib/dependencies/esm/ESMExportImportedSpecifierDependency.js +16 -18
- package/lib/dependencies/esm/ESMExportSpecifierDependency.js +20 -3
- package/lib/dependencies/esm/ESMExports.js +2 -10
- package/lib/dependencies/esm/ESMImportDependency.js +17 -2
- package/lib/dependencies/esm/ESMImportDependencyParserPlugin.js +6 -17
- package/lib/dependencies/esm/ESMImportGuard.js +11 -23
- package/lib/dependencies/esm/ESMImportSideEffectDependency.js +1 -1
- package/lib/dependencies/esm/ESMImportSpecifierDependency.js +4 -1
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +1 -3
- package/lib/dependencies/esm/TopLevelAwaitDependency.js +1 -8
- package/lib/dependencies/helpers/DynamicExports.js +4 -6
- package/lib/dependencies/html/HtmlEntryDependency.js +5 -14
- package/lib/dependencies/html/HtmlInlineHtmlDependency.js +1 -4
- package/lib/dependencies/html/HtmlInlineScriptDependency.js +2 -6
- package/lib/dependencies/html/HtmlInlineStyleDependency.js +1 -4
- package/lib/dependencies/import/ImportParserPlugin.js +3 -6
- package/lib/dependencies/import-meta/ImportMetaPlugin.js +4 -6
- package/lib/dependencies/url/URLParserPlugin.js +1 -1
- package/lib/dependencies/worker/WorkerAndWorkletPlugin.js +51 -20
- package/lib/devtool/ModuleFilenameHelpers.js +1 -1
- package/lib/devtool/SourceMapDevToolPlugin.js +1 -1
- package/lib/dll/DelegatedModule.js +3 -3
- package/lib/dll/DllModule.js +3 -1
- package/lib/dll/DllReferencePlugin.js +1 -4
- package/lib/errors/AbstractMethodError.js +1 -1
- package/lib/errors/ErrorHelpers.js +2 -1
- package/lib/errors/HookWebpackError.js +2 -1
- package/lib/errors/JSONParseError.js +4 -4
- package/lib/errors/WebpackError.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +36 -1
- package/lib/externals/ExternalModule.js +12 -9
- package/lib/externals/ExternalModuleFactoryPlugin.js +1 -2
- package/lib/externals/ExternalsPlugin.js +1 -1
- package/lib/fs/FileSystemInfo.js +4 -4
- package/lib/graph/AsyncDependenciesBlock.js +1 -1
- package/lib/graph/ChunkGraph.js +5 -0
- package/lib/graph/Dependency.js +8 -2
- package/lib/graph/ExportsInfo.js +1 -1
- package/lib/graph/ModuleGraph.js +14 -3
- package/lib/graph/buildChunkGraph.js +17 -19
- package/lib/graph/findGraphRoots.js +1 -1
- package/lib/hmr/HotModuleReplacement.runtime.js +10 -9
- package/lib/hmr/HotModuleReplacementPlugin.js +5 -11
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +16 -19
- package/lib/hmr/LazyCompilationPlugin.js +1 -7
- package/lib/html/HtmlGenerator.js +25 -17
- package/lib/html/HtmlModule.js +11 -1
- package/lib/html/HtmlModulesPlugin.js +12 -11
- package/lib/html/HtmlParser.js +10 -9
- package/lib/html/builtinEmbeddedRenderer.js +31 -33
- package/lib/html/data.js +42 -21
- package/lib/html/htmlMinify.js +4 -1
- package/lib/html/syntax-parser.js +34 -35
- package/lib/html/syntax-printer.js +2 -3
- package/lib/html/xmlMinify.js +4 -1
- package/lib/ids/HashedModuleIdsPlugin.js +1 -1
- package/lib/index.js +13 -12
- package/lib/javascript/APIPlugin.js +7 -13
- package/lib/javascript/BasicEvaluatedExpression.js +5 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +2 -7
- package/lib/javascript/ConstPlugin.js +1 -1
- package/lib/javascript/JavascriptGenerator.js +16 -11
- package/lib/javascript/JavascriptMetaInfoPlugin.js +3 -15
- package/lib/javascript/JavascriptModule.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +2 -4
- package/lib/javascript/JavascriptParser.js +99 -11
- package/lib/javascript/ScopeAnalyzer.js +183 -107
- package/lib/javascript/UseStrictPlugin.js +2 -5
- package/lib/javascript/jsMinify.js +1 -1
- package/lib/javascript/regexp.js +2 -2
- package/lib/javascript/syntax-parser.js +2114 -1506
- package/lib/javascript/syntax-printer-data.js +167 -1
- package/lib/javascript/syntax-printer.js +9554 -2782
- package/lib/json/JsonGenerator.js +15 -7
- package/lib/json/JsonModule.js +11 -0
- package/lib/json/JsonParser.js +7 -6
- package/lib/library/AssignLibraryPlugin.js +1 -1
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/ModuleLibraryPlugin.js +399 -23
- package/lib/loaders/LoaderRunner.js +76 -38
- package/lib/loaders/loadLoader.js +16 -10
- package/lib/module/Generator.js +17 -9
- package/lib/module/Module.js +2 -2
- package/lib/module/NormalModule.js +7 -5
- package/lib/module/NormalModuleFactory.js +11 -17
- package/lib/module/Parser.js +9 -2
- package/lib/module/extractSourceMap.js +69 -18
- package/lib/module/findCaseMismatch.js +2 -2
- package/lib/node/ExternalModuleInitFragment.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -12
- package/lib/node/ReadFileCompileWasmPlugin.js +2 -6
- package/lib/node/nodeConsole.js +4 -3
- package/lib/optimize/CircularModulesPlugin.js +1 -1
- package/lib/optimize/ConcatenatedModule.js +2 -6
- package/lib/optimize/FlagDependencyExportsPlugin.js +6 -11
- package/lib/optimize/FlagDependencyUsagePlugin.js +28 -3
- package/lib/optimize/InlineExports.js +4 -7
- package/lib/optimize/LazyBarrels.js +41 -5
- package/lib/optimize/ModuleConcatenationPlugin.js +8 -10
- package/lib/optimize/RealContentHashPlugin.js +2 -6
- package/lib/optimize/SideEffectsFlagPlugin.js +7 -21
- package/lib/optimize/SplitChunksPlugin.js +11 -24
- package/lib/optimize/TupleQueue.js +1 -1
- package/lib/output/CleanPlugin.js +3 -1
- package/lib/output/CopyPlugin.js +3 -4
- package/lib/performance/EvalUsagePlugin.js +1 -3
- package/lib/performance/HotspotsPlugin.js +33 -9
- package/lib/performance/PureAnnotationsPlugin.js +16 -10
- package/lib/performance/TopLevelThisPlugin.js +17 -9
- package/lib/prefetch/ResourceHintPlugin.js +1 -1
- package/lib/provide/ProvidedDependency.js +36 -4
- package/lib/rules/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +15 -5
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +7 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -5
- package/lib/runtime/RuntimeGlobals.js +6 -0
- package/lib/runtime/RuntimePlugin.js +2 -0
- package/lib/schemes/HttpUriPlugin.js +1 -2
- package/lib/schemes/VirtualUrlPlugin.js +3 -1
- package/lib/serialization/AggregateErrorSerializer.js +3 -3
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/ObjectMiddleware.js +17 -15
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +8 -6
- package/lib/stats/DefaultStatsFactoryPlugin.js +35 -35
- package/lib/stats/DefaultStatsPresetPlugin.js +2 -6
- package/lib/stats/DefaultStatsPrinterPlugin.js +12 -11
- package/lib/stats/StatsFactory.js +194 -24
- package/lib/stats/StatsPrinter.js +126 -13
- package/lib/template/DependencyTemplate.js +1 -1
- package/lib/template/RuntimeTemplate.js +13 -32
- package/lib/template/Template.js +1 -1
- package/lib/util/SourceProcessor.js +98 -15
- package/lib/util/WeakTupleMap.js +10 -4
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +9 -5
- package/lib/util/dataURL.js +2 -0
- package/lib/util/deprecation.js +4 -3
- package/lib/util/globUtils.js +1 -4
- package/lib/util/internalSerializables.js +2 -0
- package/lib/util/makeSerializable.js +6 -4
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- package/lib/util/serialization.js +31 -27
- package/lib/wasm/AsyncWasmModule.js +12 -2
- package/lib/wasm/AsyncWebAssemblyGenerator.js +12 -4
- package/lib/wasm/AsyncWebAssemblyJavascriptGenerator.js +13 -5
- package/lib/wasm/AsyncWebAssemblyParser.js +7 -5
- package/lib/wasm/UniversalCompileAsyncWasmPlugin.js +2 -6
- package/lib/wasm-sync/SyncWasmModule.js +16 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -10
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +13 -5
- package/lib/wasm-sync/WebAssemblyParser.js +10 -12
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -12
- package/lib/web/FetchCompileWasmPlugin.js +2 -6
- package/package.json +16 -18
- package/schemas/WebpackOptions.check.js +3 -3
- package/schemas/WebpackOptions.json +2 -2
- package/schemas/plugins/BannerPlugin.check.js +3 -3
- package/schemas/plugins/HtmlGeneratorOptions.check.js +3 -3
- package/schemas/plugins/HtmlParserOptions.check.js +3 -3
- package/schemas/plugins/IgnorePlugin.check.js +3 -3
- package/schemas/plugins/LoaderOptionsPlugin.check.js +3 -3
- package/schemas/plugins/ManifestPlugin.check.js +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +3 -3
- package/schemas/plugins/SSRManifestPlugin.check.js +3 -3
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +3 -3
- package/schemas/plugins/WatchIgnorePlugin.check.js +3 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +3 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +3 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +3 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +3 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +3 -3
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +3 -3
- package/schemas/plugins/container/ExternalsType.check.js +3 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +3 -3
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +3 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +3 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +3 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +3 -3
- package/schemas/plugins/css/CssParserOptions.check.js +3 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +3 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +3 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +3 -3
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +3 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +3 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +3 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +3 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +3 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +3 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +3 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +3 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +3 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +3 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +3 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +3 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +3 -3
- package/schemas/plugins/sharing/SharePlugin.check.js +3 -3
- package/types.d.ts +1482 -358
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
* KnownStatsModuleReason,
|
|
24
24
|
* KnownStatsModuleTraceDependency,
|
|
25
25
|
* KnownStatsModuleTraceItem,
|
|
26
|
-
* KnownStatsProfile
|
|
26
|
+
* KnownStatsProfile,
|
|
27
|
+
* StatsJsonArray
|
|
27
28
|
* } from "./DefaultStatsFactoryPlugin"
|
|
28
29
|
*/
|
|
29
30
|
/**
|
|
@@ -89,8 +90,8 @@ const getResourceName = (resource) => {
|
|
|
89
90
|
*/
|
|
90
91
|
const getModuleName = (name) => {
|
|
91
92
|
const [, prefix, resource] =
|
|
92
|
-
/** @type {
|
|
93
|
-
(
|
|
93
|
+
/** @type {RegExpExecArray} */
|
|
94
|
+
(/^(.*!)?([^!]*)$/.exec(name));
|
|
94
95
|
|
|
95
96
|
if (resource.length > MAX_MODULE_IDENTIFIER_LENGTH) {
|
|
96
97
|
const truncatedResource = `${resource.slice(
|
|
@@ -479,7 +480,7 @@ const ASSET_SIMPLE_PRINTERS = {
|
|
|
479
480
|
: undefined,
|
|
480
481
|
"asset.filteredChildren": (filteredChildren, { asset: { children } }) =>
|
|
481
482
|
filteredChildren > 0
|
|
482
|
-
? `${moreCount(children, filteredChildren)} ${plural(
|
|
483
|
+
? `${moreCount(/** @type {StatsJsonArray | undefined} */ (children), filteredChildren)} ${plural(
|
|
483
484
|
filteredChildren,
|
|
484
485
|
"asset",
|
|
485
486
|
"assets"
|
|
@@ -614,7 +615,7 @@ const MODULE_SIMPLE_PRINTERS = {
|
|
|
614
615
|
: undefined,
|
|
615
616
|
"module.filteredChildren": (filteredChildren, { module: { children } }) =>
|
|
616
617
|
filteredChildren > 0
|
|
617
|
-
? `${moreCount(children, filteredChildren)} ${plural(
|
|
618
|
+
? `${moreCount(/** @type {StatsJsonArray | undefined} */ (children), filteredChildren)} ${plural(
|
|
618
619
|
filteredChildren,
|
|
619
620
|
"module",
|
|
620
621
|
"modules"
|
|
@@ -625,7 +626,7 @@ const MODULE_SIMPLE_PRINTERS = {
|
|
|
625
626
|
|
|
626
627
|
/**
|
|
627
628
|
* Defines the module issuer printers type used by this module.
|
|
628
|
-
* @typedef {Printers<KnownStatsModuleIssuer, "moduleIssuer"> & Printers<
|
|
629
|
+
* @typedef {Printers<KnownStatsModuleIssuer, "moduleIssuer"> & Printers<KnownStatsProfile, "moduleIssuer.profile", "moduleIssuer">} ModuleIssuerPrinters
|
|
629
630
|
*/
|
|
630
631
|
|
|
631
632
|
/** @type {ModuleIssuerPrinters} */
|
|
@@ -660,7 +661,7 @@ const MODULE_REASON_PRINTERS = {
|
|
|
660
661
|
{ moduleReason: { children } }
|
|
661
662
|
) =>
|
|
662
663
|
filteredChildren > 0
|
|
663
|
-
? `${moreCount(children, filteredChildren)} ${plural(
|
|
664
|
+
? `${moreCount(/** @type {StatsJsonArray | undefined} */ (children), filteredChildren)} ${plural(
|
|
664
665
|
filteredChildren,
|
|
665
666
|
"reason",
|
|
666
667
|
"reasons"
|
|
@@ -1697,10 +1698,10 @@ class DefaultStatsPrinterPlugin {
|
|
|
1697
1698
|
context[format] =
|
|
1698
1699
|
/** @type {(content: Parameters<NonNullable<KnownStatsPrinterFormatters[keyof KnownStatsPrinterFormatters]>>[0], ...args: Tail<Parameters<NonNullable<KnownStatsPrinterFormatters[keyof KnownStatsPrinterFormatters]>>>) => string} */
|
|
1699
1700
|
(content, ...args) =>
|
|
1700
|
-
/** @type {
|
|
1701
|
+
/** @type {(value: Parameters<NonNullable<KnownStatsPrinterFormatters[keyof KnownStatsPrinterFormatters]>>[0], options: Required<KnownStatsPrinterColorFunctions> & StatsPrinterContextWithExtra, ...args: Tail<Parameters<NonNullable<KnownStatsPrinterFormatters[keyof KnownStatsPrinterFormatters]>>>) => string} */
|
|
1701
1702
|
(AVAILABLE_FORMATS[format])(
|
|
1702
1703
|
content,
|
|
1703
|
-
/** @type {
|
|
1704
|
+
/** @type {StatsPrinterContextWithExtra} */
|
|
1704
1705
|
(context),
|
|
1705
1706
|
...args
|
|
1706
1707
|
);
|
|
@@ -1711,7 +1712,7 @@ class DefaultStatsPrinterPlugin {
|
|
|
1711
1712
|
// Every `*_SIMPLE_PRINTERS` map registers identically: tap
|
|
1712
1713
|
// `print.for(key)` with a formatter called as `(obj, ctx, stats)`.
|
|
1713
1714
|
// One loop over all maps replaces a dozen near-identical blocks.
|
|
1714
|
-
for (const simplePrinters of /** @type {Record<string,
|
|
1715
|
+
for (const simplePrinters of /** @type {Record<string, (thing: never, context: StatsPrinterContext, printer: StatsPrinter) => string | undefined>[]} */ ([
|
|
1715
1716
|
COMPILATION_SIMPLE_PRINTERS,
|
|
1716
1717
|
ASSET_SIMPLE_PRINTERS,
|
|
1717
1718
|
MODULE_SIMPLE_PRINTERS,
|
|
@@ -1729,7 +1730,7 @@ class DefaultStatsPrinterPlugin {
|
|
|
1729
1730
|
stats.hooks.print
|
|
1730
1731
|
.for(key)
|
|
1731
1732
|
.tap(PLUGIN_NAME, (obj, ctx) =>
|
|
1732
|
-
simplePrinters[key](obj, ctx, stats)
|
|
1733
|
+
simplePrinters[key](/** @type {never} */ (obj), ctx, stats)
|
|
1733
1734
|
);
|
|
1734
1735
|
}
|
|
1735
1736
|
}
|
|
@@ -14,7 +14,12 @@ const smartGrouping = require("./smartGrouping");
|
|
|
14
14
|
/** @import Dependency from "../graph/Dependency" */
|
|
15
15
|
/** @import Module from "../module/Module" */
|
|
16
16
|
/** @import ModuleGraphConnection from "../graph/ModuleGraphConnection" */
|
|
17
|
-
/** @
|
|
17
|
+
/** @import WebpackError from "../errors/WebpackError" */
|
|
18
|
+
/**
|
|
19
|
+
* Defines the comparator type used by this module.
|
|
20
|
+
* @template T
|
|
21
|
+
* @typedef {import("../util/comparators").Comparator<T>} Comparator
|
|
22
|
+
*/
|
|
18
23
|
/** @import ModuleProfile from "../module/ModuleProfile" */
|
|
19
24
|
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
20
25
|
/**
|
|
@@ -26,6 +31,7 @@ const smartGrouping = require("./smartGrouping");
|
|
|
26
31
|
* @import {
|
|
27
32
|
* ChunkGroupInfoWithName,
|
|
28
33
|
* ModuleTrace,
|
|
34
|
+
* PreprocessedAsset,
|
|
29
35
|
* StatsAsset,
|
|
30
36
|
* StatsChunk,
|
|
31
37
|
* StatsChunkGroup,
|
|
@@ -33,6 +39,7 @@ const smartGrouping = require("./smartGrouping");
|
|
|
33
39
|
* StatsCompilation,
|
|
34
40
|
* StatsError,
|
|
35
41
|
* StatsModule,
|
|
42
|
+
* StatsModuleIssuer,
|
|
36
43
|
* StatsModuleReason,
|
|
37
44
|
* StatsModuleTraceDependency,
|
|
38
45
|
* StatsModuleTraceItem,
|
|
@@ -72,25 +79,188 @@ const smartGrouping = require("./smartGrouping");
|
|
|
72
79
|
* @typedef {T extends ChunkGroupInfoWithName[] ? Record<string, StatsObject<ChunkGroupInfoWithName, F>> : T extends (infer V)[] ? StatsObject<V, F>[] : StatsObject<T, F>} CreatedObject
|
|
73
80
|
*/
|
|
74
81
|
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
/**
|
|
83
|
+
* The `[object, data]` each `extract` key webpack registers receives.
|
|
84
|
+
* @typedef {object} KnownStatsFactoryExtract
|
|
85
|
+
* @property {[StatsCompilation, Compilation]} compilation
|
|
86
|
+
* @property {[StatsAsset, PreprocessedAsset]} asset
|
|
87
|
+
* @property {[StatsAsset, PreprocessedAsset]} asset$visible
|
|
88
|
+
* @property {[StatsChunkGroup, ChunkGroupInfoWithName]} chunkGroup
|
|
89
|
+
* @property {[StatsModule, Module]} module
|
|
90
|
+
* @property {[StatsModule, Module]} module$visible
|
|
91
|
+
* @property {[StatsModuleIssuer, Module]} moduleIssuer
|
|
92
|
+
* @property {[StatsProfile, ModuleProfile]} profile
|
|
93
|
+
* @property {[StatsModuleReason, ModuleGraphConnection]} moduleReason
|
|
94
|
+
* @property {[StatsChunk, Chunk]} chunk
|
|
95
|
+
* @property {[StatsChunkOrigin, OriginRecord]} chunkOrigin
|
|
96
|
+
* @property {[StatsError, WebpackError]} error
|
|
97
|
+
* @property {[StatsError, WebpackError]} warning
|
|
98
|
+
* @property {[StatsError, WebpackError]} cause
|
|
99
|
+
* @property {[StatsModuleTraceItem, ModuleTrace]} moduleTraceItem
|
|
100
|
+
* @property {[StatsModuleTraceDependency, Dependency]} moduleTraceDependency
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The `[item, created item]` of each array path webpack creates.
|
|
105
|
+
* @typedef {{
|
|
106
|
+
* "compilation.assets": [PreprocessedAsset, StatsAsset],
|
|
107
|
+
* "compilation.chunks": [Chunk, StatsChunk],
|
|
108
|
+
* "compilation.modules": [Module, StatsModule],
|
|
109
|
+
* "compilation.entrypoints": [ChunkGroupInfoWithName, StatsChunkGroup],
|
|
110
|
+
* "compilation.namedChunkGroups": [ChunkGroupInfoWithName, StatsChunkGroup],
|
|
111
|
+
* "compilation.errors": [Error, StatsError],
|
|
112
|
+
* "compilation.warnings": [Error, StatsError],
|
|
113
|
+
* "compilation.hints": [Error, StatsError],
|
|
114
|
+
* "compilation.children": [Compilation, StatsCompilation],
|
|
115
|
+
* "asset.related": [PreprocessedAsset, StatsAsset],
|
|
116
|
+
* "error.errors": [Error, StatsError],
|
|
117
|
+
* "warning.errors": [Error, StatsError],
|
|
118
|
+
* "chunk.modules": [Module, StatsModule],
|
|
119
|
+
* "chunk.rootModules": [Module, StatsModule],
|
|
120
|
+
* "chunk.origins": [OriginRecord, StatsChunkOrigin],
|
|
121
|
+
* "module.issuerPath": [Module, StatsModuleIssuer],
|
|
122
|
+
* "module.reasons": [ModuleGraphConnection, StatsModuleReason],
|
|
123
|
+
* "module.modules": [Module, StatsModule],
|
|
124
|
+
* "module.children": [Module, StatsModule],
|
|
125
|
+
* moduleTrace: [ModuleTrace, StatsModuleTraceItem],
|
|
126
|
+
* "moduleTraceItem.dependencies": [Dependency, StatsModuleTraceDependency],
|
|
127
|
+
* }} KnownStatsFactoryItems
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
/** @typedef {{ [Key in keyof KnownStatsFactoryItems]: KnownStatsFactoryItems[Key][0] }} KnownStatsFactoryRawItems */
|
|
131
|
+
/** @typedef {{ [Key in keyof KnownStatsFactoryItems]: KnownStatsFactoryItems[Key][1] }} KnownStatsFactoryResultItems */
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The item `getItemName` receives for each `<array path>[]` key webpack registers.
|
|
135
|
+
* @typedef {{
|
|
136
|
+
* "compilation.assets[]": PreprocessedAsset,
|
|
137
|
+
* "compilation.chunks[]": Chunk,
|
|
138
|
+
* "compilation.modules[]": Module,
|
|
139
|
+
* "compilation.entrypoints[]": ChunkGroupInfoWithName,
|
|
140
|
+
* "compilation.namedChunkGroups[]": ChunkGroupInfoWithName,
|
|
141
|
+
* "compilation.errors[]": Error,
|
|
142
|
+
* "compilation.warnings[]": Error,
|
|
143
|
+
* "compilation.hints[]": Error,
|
|
144
|
+
* "compilation.children[]": Compilation,
|
|
145
|
+
* "asset.related[]": PreprocessedAsset,
|
|
146
|
+
* "error.errors[]": Error,
|
|
147
|
+
* "warning.errors[]": Error,
|
|
148
|
+
* "chunk.modules[]": Module,
|
|
149
|
+
* "chunk.rootModules[]": Module,
|
|
150
|
+
* "chunk.origins[]": OriginRecord,
|
|
151
|
+
* "module.issuerPath[]": Module,
|
|
152
|
+
* "module.reasons[]": ModuleGraphConnection,
|
|
153
|
+
* "module.modules[]": Module,
|
|
154
|
+
* "module.children[]": Module,
|
|
155
|
+
* "moduleTrace[]": ModuleTrace,
|
|
156
|
+
* "moduleTraceItem.dependencies[]": Dependency,
|
|
157
|
+
* }} KnownStatsFactoryItemNames
|
|
158
|
+
*/
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* The data `getItemFactory` receives: an item name key gets that item's data.
|
|
162
|
+
* @typedef {{ [Key in keyof KnownStatsFactoryExtract]: KnownStatsFactoryExtract[Key][1] } & { "compilation.children[].compilation": Compilation }} KnownStatsFactoryItemFactories
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The value `result` passes on: an object key's stats object, an array path's (merged) items.
|
|
167
|
+
* @typedef {{ [Key in keyof KnownStatsFactoryExtract]: KnownStatsFactoryExtract[Key][0] } & { [Key in Exclude<keyof KnownStatsFactoryResultItems, "compilation.entrypoints" | "compilation.namedChunkGroups">]: KnownStatsFactoryResultItems[Key][] } & { "compilation.entrypoints": Record<string, StatsChunkGroup>, "compilation.namedChunkGroups": Record<string, StatsChunkGroup> }} KnownStatsFactoryResults
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* `extract` hooks: the exact `[object, data]` for keys webpack registers, generic for plugin keys.
|
|
172
|
+
* @typedef {{
|
|
173
|
+
* for<K extends keyof KnownStatsFactoryExtract>(key: K): SyncBailHook<[KnownStatsFactoryExtract[K][0], KnownStatsFactoryExtract[K][1], StatsFactoryContext], void>,
|
|
174
|
+
* for<O = EXPECTED_ANY, D = EXPECTED_ANY>(key: string): SyncBailHook<[O, D, StatsFactoryContext], void>
|
|
175
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, EXPECTED_ANY, StatsFactoryContext], void>>} StatsFactoryExtractHookMap
|
|
176
|
+
*/
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Filter hooks over the raw item: exact for known array paths, generic for plugin keys.
|
|
180
|
+
* @typedef {{
|
|
181
|
+
* for<K extends keyof KnownStatsFactoryRawItems>(key: K): SyncBailHook<[KnownStatsFactoryRawItems[K], StatsFactoryContext, number, number], boolean | void>,
|
|
182
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I, StatsFactoryContext, number, number], boolean | void>
|
|
183
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsFactoryContext, number, number], boolean | void>>} StatsFactoryItemFilterHookMap
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Sort hooks over the raw item: exact for known array paths, generic for plugin keys.
|
|
188
|
+
* @typedef {{
|
|
189
|
+
* for<K extends keyof KnownStatsFactoryRawItems>(key: K): SyncBailHook<[Comparator<KnownStatsFactoryRawItems[K]>[], StatsFactoryContext], void>,
|
|
190
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[Comparator<I>[], StatsFactoryContext], void>
|
|
191
|
+
* } & HookMap<SyncBailHook<[Comparator<EXPECTED_ANY>[], StatsFactoryContext], void>>} StatsFactoryItemSortHookMap
|
|
192
|
+
*/
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Filter hooks over the created item: exact for known array paths, generic for plugin keys.
|
|
196
|
+
* @typedef {{
|
|
197
|
+
* for<K extends keyof KnownStatsFactoryResultItems>(key: K): SyncBailHook<[KnownStatsFactoryResultItems[K], StatsFactoryContext, number, number], boolean | void>,
|
|
198
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I, StatsFactoryContext, number, number], boolean | void>
|
|
199
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsFactoryContext, number, number], boolean | void>>} StatsFactoryResultFilterHookMap
|
|
200
|
+
*/
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Sort hooks over the created item: exact for known array paths, generic for plugin keys.
|
|
204
|
+
* @typedef {{
|
|
205
|
+
* for<K extends keyof KnownStatsFactoryResultItems>(key: K): SyncBailHook<[Comparator<KnownStatsFactoryResultItems[K]>[], StatsFactoryContext], void>,
|
|
206
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[Comparator<I>[], StatsFactoryContext], void>
|
|
207
|
+
* } & HookMap<SyncBailHook<[Comparator<EXPECTED_ANY>[], StatsFactoryContext], void>>} StatsFactoryResultSortHookMap
|
|
208
|
+
*/
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* `groupResults` hooks: group configs over the exact created item for known keys, generic for plugin keys.
|
|
212
|
+
* @typedef {{
|
|
213
|
+
* for<K extends keyof KnownStatsFactoryResultItems, G = object>(key: K): SyncBailHook<[GroupConfig<KnownStatsFactoryResultItems[K], G>[], StatsFactoryContext], void>,
|
|
214
|
+
* for<I = EXPECTED_ANY, G = EXPECTED_ANY>(key: string): SyncBailHook<[GroupConfig<I, G>[], StatsFactoryContext], void>
|
|
215
|
+
* } & HookMap<SyncBailHook<[GroupConfig<EXPECTED_ANY, EXPECTED_ANY>[], StatsFactoryContext], void>>} StatsFactoryGroupResultsHookMap
|
|
216
|
+
*/
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* `merge` hooks: the exact created items for known keys, merged by default into an object by name.
|
|
220
|
+
* @typedef {{
|
|
221
|
+
* for<K extends keyof KnownStatsFactoryResultItems, R = Record<string, KnownStatsFactoryResultItems[K]>>(key: K): SyncBailHook<[KnownStatsFactoryResultItems[K][], StatsFactoryContext], R | void>,
|
|
222
|
+
* for<I = EXPECTED_ANY, R = EXPECTED_ANY>(key: string): SyncBailHook<[I[], StatsFactoryContext], R | void>
|
|
223
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY[], StatsFactoryContext], EXPECTED_ANY>>} StatsFactoryMergeHookMap
|
|
224
|
+
*/
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* `result` hooks: the exact stats value for known keys, generic for plugin keys.
|
|
228
|
+
* @typedef {{
|
|
229
|
+
* for<K extends keyof KnownStatsFactoryResults>(key: K): SyncBailHook<[KnownStatsFactoryResults[K], StatsFactoryContext], KnownStatsFactoryResults[K]>,
|
|
230
|
+
* for<R = EXPECTED_ANY>(key: string): SyncBailHook<[R, StatsFactoryContext], R>
|
|
231
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsFactoryContext], EXPECTED_ANY>>} StatsFactoryResultHookMap
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* `getItemName` hooks: the exact item for known `<array path>[]` keys, generic for plugin keys.
|
|
236
|
+
* @typedef {{
|
|
237
|
+
* for<K extends keyof KnownStatsFactoryItemNames>(key: K): SyncBailHook<[KnownStatsFactoryItemNames[K], StatsFactoryContext], string | void>,
|
|
238
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I, StatsFactoryContext], string | void>
|
|
239
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsFactoryContext], string | void>>} StatsFactoryGetItemNameHookMap
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* `getItemFactory` hooks: the exact data for known item keys, generic for plugin keys.
|
|
244
|
+
* @typedef {{
|
|
245
|
+
* for<K extends keyof KnownStatsFactoryItemFactories>(key: K): SyncBailHook<[KnownStatsFactoryItemFactories[K], StatsFactoryContext], StatsFactory | void>,
|
|
246
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I, StatsFactoryContext], StatsFactory | void>
|
|
247
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsFactoryContext], StatsFactory | void>>} StatsFactoryGetItemFactoryHookMap
|
|
248
|
+
*/
|
|
79
249
|
|
|
80
250
|
/**
|
|
81
251
|
* Defines the stats factory hooks type used by this module.
|
|
82
252
|
* @typedef {object} StatsFactoryHooks
|
|
83
|
-
* @property {
|
|
84
|
-
* @property {
|
|
85
|
-
* @property {
|
|
86
|
-
* @property {
|
|
87
|
-
* @property {
|
|
88
|
-
* @property {
|
|
89
|
-
* @property {
|
|
90
|
-
* @property {
|
|
91
|
-
* @property {
|
|
92
|
-
* @property {
|
|
93
|
-
* @property {
|
|
253
|
+
* @property {StatsFactoryExtractHookMap} extract
|
|
254
|
+
* @property {StatsFactoryItemFilterHookMap} filter
|
|
255
|
+
* @property {StatsFactoryItemSortHookMap} sort
|
|
256
|
+
* @property {StatsFactoryItemFilterHookMap} filterSorted
|
|
257
|
+
* @property {StatsFactoryGroupResultsHookMap} groupResults
|
|
258
|
+
* @property {StatsFactoryResultSortHookMap} sortResults
|
|
259
|
+
* @property {StatsFactoryResultFilterHookMap} filterResults
|
|
260
|
+
* @property {StatsFactoryMergeHookMap} merge
|
|
261
|
+
* @property {StatsFactoryResultHookMap} result
|
|
262
|
+
* @property {StatsFactoryGetItemNameHookMap} getItemName
|
|
263
|
+
* @property {StatsFactoryGetItemFactoryHookMap} getItemFactory
|
|
94
264
|
*/
|
|
95
265
|
|
|
96
266
|
/**
|
|
@@ -178,7 +348,7 @@ class StatsFactory {
|
|
|
178
348
|
*/
|
|
179
349
|
_forEachLevel(hookMap, cache, type, fn) {
|
|
180
350
|
for (const hook of this._getAllLevelHooks(hookMap, cache, type)) {
|
|
181
|
-
const result = fn(
|
|
351
|
+
const result = fn(hook);
|
|
182
352
|
if (result !== undefined) return result;
|
|
183
353
|
}
|
|
184
354
|
}
|
|
@@ -198,7 +368,7 @@ class StatsFactory {
|
|
|
198
368
|
*/
|
|
199
369
|
_forEachLevelWaterfall(hookMap, cache, type, data, fn) {
|
|
200
370
|
for (const hook of this._getAllLevelHooks(hookMap, cache, type)) {
|
|
201
|
-
data = fn(
|
|
371
|
+
data = fn(hook, data);
|
|
202
372
|
}
|
|
203
373
|
return data;
|
|
204
374
|
}
|
|
@@ -223,7 +393,7 @@ class StatsFactory {
|
|
|
223
393
|
let i = 0;
|
|
224
394
|
return items.filter((item, idx) => {
|
|
225
395
|
for (const hook of hooks) {
|
|
226
|
-
const r = fn(
|
|
396
|
+
const r = fn(hook, item, idx, i);
|
|
227
397
|
if (r !== undefined) {
|
|
228
398
|
if (r) i++;
|
|
229
399
|
return r;
|
|
@@ -286,7 +456,7 @@ class StatsFactory {
|
|
|
286
456
|
);
|
|
287
457
|
|
|
288
458
|
// sort items
|
|
289
|
-
/** @type {Comparator[]} */
|
|
459
|
+
/** @type {Comparator<FactoryData extends (infer I)[] ? I : never>[]} */
|
|
290
460
|
const comparators = [];
|
|
291
461
|
this._forEachLevel(this.hooks.sort, this._caches.sort, type, (h) =>
|
|
292
462
|
h.call(comparators, context)
|
|
@@ -344,7 +514,7 @@ class StatsFactory {
|
|
|
344
514
|
});
|
|
345
515
|
|
|
346
516
|
// sort result items
|
|
347
|
-
/** @type {Comparator[]} */
|
|
517
|
+
/** @type {Comparator<(typeof resultItems)[number]>[]} */
|
|
348
518
|
const comparators2 = [];
|
|
349
519
|
this._forEachLevel(
|
|
350
520
|
this.hooks.sortResults,
|
|
@@ -357,7 +527,7 @@ class StatsFactory {
|
|
|
357
527
|
}
|
|
358
528
|
|
|
359
529
|
// group result items
|
|
360
|
-
/** @type {GroupConfig<
|
|
530
|
+
/** @type {GroupConfig<(typeof resultItems)[number], (typeof resultItems)[number]>[]} */
|
|
361
531
|
const groupConfigs = [];
|
|
362
532
|
this._forEachLevel(
|
|
363
533
|
this.hooks.groupResults,
|
|
@@ -397,8 +567,8 @@ class StatsFactory {
|
|
|
397
567
|
(h, r) => h.call(r, context)
|
|
398
568
|
);
|
|
399
569
|
}
|
|
400
|
-
|
|
401
|
-
|
|
570
|
+
const object =
|
|
571
|
+
/** @type {CreatedObject<FactoryData, FallbackCreatedObject>} */ ({});
|
|
402
572
|
|
|
403
573
|
// run extract on value
|
|
404
574
|
this._forEachLevel(this.hooks.extract, this._caches.extract, type, (h) =>
|
|
@@ -12,9 +12,12 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
12
12
|
* StatsAsset,
|
|
13
13
|
* StatsChunk,
|
|
14
14
|
* StatsChunkGroup,
|
|
15
|
+
* StatsChunkOrigin,
|
|
15
16
|
* StatsCompilation,
|
|
16
17
|
* StatsError,
|
|
18
|
+
* StatsJsonValue,
|
|
17
19
|
* StatsLogging,
|
|
20
|
+
* StatsLoggingEntry,
|
|
18
21
|
* StatsModule,
|
|
19
22
|
* StatsModuleIssuer,
|
|
20
23
|
* StatsModuleReason,
|
|
@@ -85,17 +88,117 @@ const { HookMap, SyncBailHook, SyncWaterfallHook } = require("tapable");
|
|
|
85
88
|
|
|
86
89
|
/** @typedef {KnownStatsPrinterColorFunctions & KnownStatsPrinterFormatters & KnownStatsPrinterContext & Record<string, EXPECTED_ANY>} StatsPrinterContext */
|
|
87
90
|
/** @typedef {StatsPrinterContext & Required<KnownStatsPrinterColorFunctions> & Required<KnownStatsPrinterFormatters> & { type: string }} StatsPrinterContextWithExtra */
|
|
88
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* The value `print` receives for each object key webpack prints; the key also matches same-named fields.
|
|
93
|
+
* @typedef {object} KnownStatsPrintObjects
|
|
94
|
+
* @property {StatsCompilation} compilation
|
|
95
|
+
* @property {StatsAsset} asset
|
|
96
|
+
* @property {StatsChunk} chunk
|
|
97
|
+
* @property {StatsChunkGroup} chunkGroup
|
|
98
|
+
* @property {StatsModule | string | null} module
|
|
99
|
+
* @property {StatsModuleReason} moduleReason
|
|
100
|
+
* @property {StatsModuleIssuer} moduleIssuer
|
|
101
|
+
* @property {StatsChunkOrigin} chunkOrigin
|
|
102
|
+
* @property {StatsError} error
|
|
103
|
+
* @property {StatsProfile} profile
|
|
104
|
+
* @property {StatsLogging & { name: string }} loggingGroup
|
|
105
|
+
* @property {StatsModuleTraceItem} moduleTraceItem
|
|
106
|
+
* @property {StatsModuleTraceDependency} moduleTraceDependency
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The item of each array path webpack prints stats objects for.
|
|
111
|
+
* @typedef {{
|
|
112
|
+
* "compilation.assets": StatsAsset,
|
|
113
|
+
* "compilation.modules": StatsModule,
|
|
114
|
+
* "compilation.chunks": StatsChunk,
|
|
115
|
+
* "compilation.entrypoints": StatsChunkGroup,
|
|
116
|
+
* "compilation.namedChunkGroups": StatsChunkGroup,
|
|
117
|
+
* "compilation.errors": StatsError,
|
|
118
|
+
* "compilation.warnings": StatsError,
|
|
119
|
+
* "compilation.hints": StatsError,
|
|
120
|
+
* "compilation.logging": StatsLogging & { name: string },
|
|
121
|
+
* "compilation.children": StatsCompilation,
|
|
122
|
+
* "asset.related": StatsAsset,
|
|
123
|
+
* "asset.children": StatsAsset,
|
|
124
|
+
* "module.modules": StatsModule,
|
|
125
|
+
* "module.children": StatsModule,
|
|
126
|
+
* "module.reasons": StatsModuleReason,
|
|
127
|
+
* "moduleReason.children": StatsModuleReason,
|
|
128
|
+
* "module.issuerPath": StatsModuleIssuer,
|
|
129
|
+
* "chunk.origins": StatsChunkOrigin,
|
|
130
|
+
* "chunk.modules": StatsModule,
|
|
131
|
+
* "loggingGroup.entries": StatsLoggingEntry,
|
|
132
|
+
* "loggingEntry.children": StatsLoggingEntry,
|
|
133
|
+
* "error.moduleTrace": StatsModuleTraceItem,
|
|
134
|
+
* "error.errors": StatsError,
|
|
135
|
+
* "moduleTraceItem.dependencies": StatsModuleTraceDependency,
|
|
136
|
+
* }} KnownStatsPrintItems
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The item `getItemName` receives for each `<array path>[]` key of `KnownStatsPrintItems`.
|
|
141
|
+
* @typedef {{
|
|
142
|
+
* "compilation.assets[]": StatsAsset,
|
|
143
|
+
* "compilation.modules[]": StatsModule,
|
|
144
|
+
* "compilation.chunks[]": StatsChunk,
|
|
145
|
+
* "compilation.entrypoints[]": StatsChunkGroup,
|
|
146
|
+
* "compilation.namedChunkGroups[]": StatsChunkGroup,
|
|
147
|
+
* "compilation.errors[]": StatsError,
|
|
148
|
+
* "compilation.warnings[]": StatsError,
|
|
149
|
+
* "compilation.hints[]": StatsError,
|
|
150
|
+
* "compilation.logging[]": StatsLogging & { name: string },
|
|
151
|
+
* "compilation.children[]": StatsCompilation,
|
|
152
|
+
* "asset.related[]": StatsAsset,
|
|
153
|
+
* "asset.children[]": StatsAsset,
|
|
154
|
+
* "module.modules[]": StatsModule,
|
|
155
|
+
* "module.children[]": StatsModule,
|
|
156
|
+
* "module.reasons[]": StatsModuleReason,
|
|
157
|
+
* "moduleReason.children[]": StatsModuleReason,
|
|
158
|
+
* "module.issuerPath[]": StatsModuleIssuer,
|
|
159
|
+
* "chunk.origins[]": StatsChunkOrigin,
|
|
160
|
+
* "chunk.modules[]": StatsModule,
|
|
161
|
+
* "loggingGroup.entries[]": StatsLoggingEntry,
|
|
162
|
+
* "loggingEntry.children[]": StatsLoggingEntry,
|
|
163
|
+
* "error.moduleTrace[]": StatsModuleTraceItem,
|
|
164
|
+
* "error.errors[]": StatsError,
|
|
165
|
+
* "moduleTraceItem.dependencies[]": StatsModuleTraceDependency,
|
|
166
|
+
* }} KnownStatsPrintItemNames
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* `sortItems` hooks: the exact items for known array paths, generic for plugin keys.
|
|
171
|
+
* @typedef {{
|
|
172
|
+
* for<K extends keyof KnownStatsPrintItems>(key: K): SyncBailHook<[KnownStatsPrintItems[K][], StatsPrinterContext], boolean | void>,
|
|
173
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I[], StatsPrinterContext], boolean | void>
|
|
174
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY[], StatsPrinterContext], boolean | void>>} StatsPrinterSortItemsHookMap
|
|
175
|
+
*/
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* `getItemName` hooks: the exact item for known `<array path>[]` keys, generic for plugin keys.
|
|
179
|
+
* @typedef {{
|
|
180
|
+
* for<K extends keyof KnownStatsPrintItemNames>(key: K): SyncBailHook<[KnownStatsPrintItemNames[K], StatsPrinterContext], string | void>,
|
|
181
|
+
* for<I = EXPECTED_ANY>(key: string): SyncBailHook<[I, StatsPrinterContext], string | void>
|
|
182
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsPrinterContext], string | void>>} StatsPrinterGetItemNameHookMap
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* `print` hooks: the exact value for known object keys, generic for plugin keys.
|
|
187
|
+
* @typedef {{
|
|
188
|
+
* for<K extends keyof KnownStatsPrintObjects>(key: K): SyncBailHook<[KnownStatsPrintObjects[K], StatsPrinterContext], string | undefined | void>,
|
|
189
|
+
* for<T = EXPECTED_ANY>(key: string): SyncBailHook<[T, StatsPrinterContext], string | undefined | void>
|
|
190
|
+
* } & HookMap<SyncBailHook<[EXPECTED_ANY, StatsPrinterContext], string | undefined | void>>} StatsPrinterPrintHookMap
|
|
191
|
+
*/
|
|
89
192
|
|
|
90
193
|
/**
|
|
91
194
|
* Represents the stats printer runtime component.
|
|
92
195
|
* @typedef {object} StatsPrintHooks
|
|
93
196
|
* @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], void>>} sortElements
|
|
94
197
|
* @property {HookMap<SyncBailHook<[PrintedElement[], StatsPrinterContext], string | undefined | void>>} printElements
|
|
95
|
-
* @property {
|
|
96
|
-
* @property {
|
|
198
|
+
* @property {StatsPrinterSortItemsHookMap} sortItems
|
|
199
|
+
* @property {StatsPrinterGetItemNameHookMap} getItemName
|
|
97
200
|
* @property {HookMap<SyncBailHook<[string[], StatsPrinterContext], string | undefined>>} printItems
|
|
98
|
-
* @property {
|
|
201
|
+
* @property {StatsPrinterPrintHookMap} print
|
|
99
202
|
* @property {HookMap<SyncWaterfallHook<[string, StatsPrinterContext]>>} result
|
|
100
203
|
*/
|
|
101
204
|
|
|
@@ -193,8 +296,9 @@ class StatsPrinter {
|
|
|
193
296
|
|
|
194
297
|
/**
|
|
195
298
|
* Returns printed result.
|
|
299
|
+
* @template T
|
|
196
300
|
* @param {string} type The type
|
|
197
|
-
* @param {
|
|
301
|
+
* @param {T} object Object to print
|
|
198
302
|
* @param {StatsPrinterContext=} baseContext The base context
|
|
199
303
|
* @returns {string | undefined} printed result
|
|
200
304
|
*/
|
|
@@ -214,8 +318,9 @@ class StatsPrinter {
|
|
|
214
318
|
/**
|
|
215
319
|
* Returns printed result.
|
|
216
320
|
* @private
|
|
321
|
+
* @template T
|
|
217
322
|
* @param {string} type type
|
|
218
|
-
* @param {
|
|
323
|
+
* @param {T} object object
|
|
219
324
|
* @param {StatsPrinterContext=} baseContext context
|
|
220
325
|
* @returns {string | undefined} printed result
|
|
221
326
|
*/
|
|
@@ -273,7 +378,9 @@ class StatsPrinter {
|
|
|
273
378
|
}
|
|
274
379
|
} else if (object !== null && typeof object === "object") {
|
|
275
380
|
const elements = Object.keys(object).filter(
|
|
276
|
-
(key) =>
|
|
381
|
+
(key) =>
|
|
382
|
+
/** @type {Record<string, StatsJsonValue>} */ (object)[key] !==
|
|
383
|
+
undefined
|
|
277
384
|
);
|
|
278
385
|
this._forEachLevel(this.hooks.sortElements, type, (h) =>
|
|
279
386
|
h.call(
|
|
@@ -283,12 +390,18 @@ class StatsPrinter {
|
|
|
283
390
|
)
|
|
284
391
|
);
|
|
285
392
|
const printedElements = elements.map((element) => {
|
|
286
|
-
const content = this.print(
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
393
|
+
const content = this.print(
|
|
394
|
+
`${type}.${element}`,
|
|
395
|
+
/** @type {Record<string, StatsJsonValue>} */ (object)[element],
|
|
396
|
+
{
|
|
397
|
+
...context,
|
|
398
|
+
_parent: object,
|
|
399
|
+
_element: element,
|
|
400
|
+
[element]: /** @type {Record<string, StatsJsonValue>} */ (object)[
|
|
401
|
+
element
|
|
402
|
+
]
|
|
403
|
+
}
|
|
404
|
+
);
|
|
292
405
|
return { element, content };
|
|
293
406
|
});
|
|
294
407
|
printResult = this._forEachLevel(this.hooks.printElements, type, (h) =>
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
* @property {InitFragment<GenerateContext>[]} initFragments mutable array of init fragments for the current module
|
|
37
37
|
* @property {ConcatenationScope=} concatenationScope when in a concatenated module, information about other concatenated modules
|
|
38
38
|
* @property {CodeGenerationResults} codeGenerationResults the code generation results
|
|
39
|
-
* @property {InitFragment<
|
|
39
|
+
* @property {InitFragment<import("../javascript/JavascriptModulesPlugin").ChunkRenderContext>[]} chunkInitFragments init fragments for the chunk, rendered with its render context
|
|
40
40
|
* @property {(() => CodeGenerationResultData)=} getData get access to the code generation data
|
|
41
41
|
*/
|
|
42
42
|
|