webpack 5.98.0 → 5.99.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 +7 -3
- package/lib/AsyncDependenciesBlock.js +3 -1
- package/lib/BannerPlugin.js +1 -1
- package/lib/Cache.js +9 -7
- package/lib/CacheFacade.js +5 -5
- package/lib/Chunk.js +2 -2
- package/lib/ChunkGraph.js +21 -16
- package/lib/ChunkTemplate.js +6 -6
- package/lib/CleanPlugin.js +10 -10
- package/lib/CodeGenerationResults.js +4 -3
- package/lib/CompatibilityPlugin.js +4 -1
- package/lib/Compilation.js +326 -152
- package/lib/Compiler.js +13 -18
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +5 -3
- package/lib/ContextModule.js +4 -2
- package/lib/ContextModuleFactory.js +3 -3
- package/lib/ContextReplacementPlugin.js +43 -16
- package/lib/DefinePlugin.js +25 -24
- package/lib/DelegatedModule.js +4 -2
- package/lib/DelegatedModuleFactoryPlugin.js +2 -1
- package/lib/Dependency.js +19 -13
- package/lib/DependencyTemplates.js +4 -3
- package/lib/DllModule.js +4 -2
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllReferencePlugin.js +2 -1
- package/lib/DynamicEntryPlugin.js +1 -1
- package/lib/EnvironmentPlugin.js +4 -2
- package/lib/ExportsInfo.js +72 -40
- package/lib/ExternalModule.js +14 -5
- package/lib/ExternalModuleFactoryPlugin.js +24 -12
- package/lib/FileSystemInfo.js +129 -94
- package/lib/FlagDependencyExportsPlugin.js +6 -4
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +29 -1
- package/lib/HookWebpackError.js +2 -2
- package/lib/HotModuleReplacementPlugin.js +3 -9
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +0 -5
- package/lib/InitFragment.js +1 -1
- package/lib/LoaderOptionsPlugin.js +8 -5
- package/lib/MainTemplate.js +7 -7
- package/lib/Module.js +40 -17
- package/lib/ModuleBuildError.js +3 -1
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleFactory.js +9 -3
- package/lib/ModuleFilenameHelpers.js +13 -13
- package/lib/ModuleGraph.js +20 -14
- package/lib/ModuleGraphConnection.js +7 -13
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +2 -1
- package/lib/ModuleSourceTypesConstants.js +11 -0
- package/lib/ModuleTemplate.js +5 -5
- package/lib/ModuleTypeConstants.js +15 -0
- package/lib/MultiCompiler.js +4 -4
- package/lib/MultiStats.js +1 -1
- package/lib/NormalModule.js +101 -54
- package/lib/NormalModuleFactory.js +38 -33
- package/lib/NormalModuleReplacementPlugin.js +3 -2
- package/lib/NullFactory.js +2 -2
- package/lib/Parser.js +4 -3
- package/lib/ProgressPlugin.js +1 -2
- package/lib/RawModule.js +4 -2
- package/lib/RecordIdsPlugin.js +6 -2
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +12 -9
- package/lib/RuntimeModule.js +4 -2
- package/lib/RuntimeTemplate.js +2 -1
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SourceMapDevToolPlugin.js +0 -8
- package/lib/Template.js +6 -5
- package/lib/TemplatedPathPlugin.js +15 -12
- package/lib/WebpackOptionsApply.js +1 -1
- package/lib/asset/AssetGenerator.js +237 -170
- package/lib/asset/AssetModulesPlugin.js +50 -8
- package/lib/asset/AssetSourceGenerator.js +18 -0
- package/lib/asset/RawDataUrlModule.js +4 -2
- package/lib/buildChunkGraph.js +14 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +6 -2
- package/lib/cache/PackFileCacheStrategy.js +137 -121
- package/lib/cache/ResolverCachePlugin.js +15 -7
- package/lib/cache/getLazyHashedEtag.js +4 -3
- package/lib/cli.js +23 -15
- package/lib/config/defaults.js +93 -26
- package/lib/config/normalization.js +14 -13
- package/lib/config/target.js +8 -8
- package/lib/container/ContainerEntryModule.js +4 -2
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/FallbackModule.js +4 -2
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/RemoteModule.js +4 -2
- package/lib/container/options.js +5 -5
- package/lib/css/CssGenerator.js +71 -9
- package/lib/css/CssModulesPlugin.js +30 -5
- package/lib/css/CssParser.js +37 -17
- package/lib/css/walkCssTokens.js +17 -17
- package/lib/debug/ProfilingPlugin.js +98 -38
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +10 -4
- package/lib/dependencies/AMDPlugin.js +5 -2
- package/lib/dependencies/AMDRequireArrayDependency.js +4 -3
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +15 -7
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CommonJsExportRequireDependency.js +4 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +3 -3
- package/lib/dependencies/CommonJsImportsParserPlugin.js +8 -7
- package/lib/dependencies/CommonJsRequireContextDependency.js +2 -1
- package/lib/dependencies/ContextDependencyHelpers.js +13 -6
- package/lib/dependencies/CssIcssExportDependency.js +15 -12
- package/lib/dependencies/CssIcssImportDependency.js +4 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +17 -14
- package/lib/dependencies/ExportsInfoDependency.js +6 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +5 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +22 -15
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +23 -8
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +8 -6
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -14
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +5 -5
- package/lib/dependencies/ImportContextDependency.js +2 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -4
- package/lib/dependencies/JsonExportsDependency.js +24 -8
- package/lib/dependencies/LoaderPlugin.js +4 -14
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +6 -3
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +11 -5
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +1 -1
- package/lib/dependencies/WorkerDependency.js +6 -3
- package/lib/dependencies/WorkerPlugin.js +100 -41
- package/lib/esm/ModuleChunkFormatPlugin.js +5 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +32 -24
- package/lib/hmr/lazyCompilationBackend.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +15 -14
- package/lib/ids/SyncModuleIdsPlugin.js +9 -5
- package/lib/index.js +5 -5
- package/lib/javascript/BasicEvaluatedExpression.js +6 -6
- package/lib/javascript/JavascriptGenerator.js +11 -1
- package/lib/javascript/JavascriptModulesPlugin.js +51 -31
- package/lib/javascript/JavascriptParser.js +272 -188
- package/lib/javascript/JavascriptParserHelpers.js +10 -9
- package/lib/javascript/StartupHelpers.js +4 -1
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +54 -22
- package/lib/json/JsonModulesPlugin.js +16 -2
- package/lib/json/JsonParser.js +8 -4
- package/lib/library/AbstractLibraryPlugin.js +7 -3
- package/lib/library/AssignLibraryPlugin.js +29 -1
- package/lib/library/EnableLibraryPlugin.js +7 -10
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +121 -15
- package/lib/logging/Logger.js +2 -2
- package/lib/logging/createConsoleLogger.js +4 -4
- package/lib/node/NodeEnvironmentPlugin.js +6 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +1 -2
- package/lib/node/nodeConsole.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +1 -1
- package/lib/optimize/ConcatenatedModule.js +19 -12
- package/lib/optimize/InnerGraph.js +3 -2
- package/lib/optimize/InnerGraphPlugin.js +13 -7
- package/lib/optimize/LimitChunkCountPlugin.js +20 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +10 -7
- package/lib/optimize/RealContentHashPlugin.js +8 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +4 -2
- package/lib/optimize/SplitChunksPlugin.js +87 -65
- package/lib/rules/BasicEffectRulePlugin.js +9 -1
- package/lib/rules/BasicMatcherRulePlugin.js +15 -4
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -3
- package/lib/rules/RuleSetCompiler.js +25 -14
- package/lib/rules/UseEffectRulePlugin.js +47 -17
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
- package/lib/schemes/HttpUriPlugin.js +38 -17
- package/lib/serialization/BinaryMiddleware.js +52 -19
- package/lib/serialization/FileMiddleware.js +78 -48
- package/lib/serialization/ObjectMiddleware.js +78 -29
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +15 -10
- package/lib/serialization/SerializerMiddleware.js +80 -41
- package/lib/serialization/SingleItemMiddleware.js +10 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +4 -2
- package/lib/sharing/ProvideSharedModule.js +4 -2
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/utils.js +2 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +80 -78
- package/lib/stats/DefaultStatsPresetPlugin.js +43 -23
- package/lib/stats/DefaultStatsPrinterPlugin.js +85 -43
- package/lib/stats/StatsFactory.js +11 -11
- package/lib/stats/StatsPrinter.js +7 -7
- package/lib/util/ArrayHelpers.js +2 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +4 -4
- package/lib/util/IterableHelpers.js +1 -1
- package/lib/util/LazyBucketSortedSet.js +41 -23
- package/lib/util/LazySet.js +3 -2
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +1 -1
- package/lib/util/SortableSet.js +9 -7
- package/lib/util/TupleQueue.js +9 -8
- package/lib/util/TupleSet.js +2 -2
- package/lib/util/WeakTupleMap.js +12 -11
- package/lib/util/binarySearchBounds.js +2 -1
- package/lib/util/cleverMerge.js +84 -54
- package/lib/util/comparators.js +22 -21
- package/lib/util/compileBooleanMatcher.js +3 -3
- package/lib/util/concatenate.js +6 -4
- package/lib/util/create-schema-validation.js +4 -4
- package/lib/util/createHash.js +2 -2
- package/lib/util/deprecation.js +35 -33
- package/lib/util/deterministicGrouping.js +6 -6
- package/lib/util/findGraphRoots.js +1 -1
- package/lib/util/fs.js +39 -39
- package/lib/util/hash/wasm-hash.js +2 -2
- package/lib/util/identifier.js +15 -18
- package/lib/util/makeSerializable.js +1 -1
- package/lib/util/memoize.js +4 -1
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +2 -2
- package/lib/util/propertyName.js +0 -1
- package/lib/util/registerExternalSerializer.js +15 -18
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +34 -27
- package/lib/util/serialization.js +5 -16
- package/lib/util/smartGrouping.js +3 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +11 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +10 -0
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +4 -0
- package/lib/wasm-sync/WebAssemblyGenerator.js +28 -12
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +10 -0
- package/lib/wasm-sync/WebAssemblyParser.js +9 -4
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -25
- package/package.json +19 -17
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +48 -13
- package/schemas/plugins/JsonModulesPluginGenerator.check.d.ts +7 -0
- package/schemas/plugins/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/JsonModulesPluginGenerator.json +11 -0
- package/schemas/plugins/SourceMapDevToolPlugin.json +2 -2
- package/types.d.ts +918 -615
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
@@ -27,14 +27,15 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
27
27
|
/** @typedef {import("webpack-sources").Source} Source */
|
28
28
|
/** @typedef {import("../Chunk")} Chunk */
|
29
29
|
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
30
|
+
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
30
31
|
/** @typedef {import("../ChunkGroup")} ChunkGroup */
|
31
32
|
/** @typedef {import("../ChunkGroup").OriginRecord} OriginRecord */
|
32
33
|
/** @typedef {import("../Compilation")} Compilation */
|
33
34
|
/** @typedef {import("../Compilation").Asset} Asset */
|
34
35
|
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
36
|
+
/** @typedef {import("../Compilation").KnownNormalizedStatsOptions} KnownNormalizedStatsOptions */
|
35
37
|
/** @typedef {import("../Compilation").NormalizedStatsOptions} NormalizedStatsOptions */
|
36
38
|
/** @typedef {import("../Compiler")} Compiler */
|
37
|
-
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
38
39
|
/** @typedef {import("../Dependency")} Dependency */
|
39
40
|
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
40
41
|
/** @typedef {import("../Module")} Module */
|
@@ -42,20 +43,23 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
42
43
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
43
44
|
/** @typedef {import("../ModuleProfile")} ModuleProfile */
|
44
45
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
45
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
46
46
|
/** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
|
47
|
+
/** @typedef {import("../WebpackError")} WebpackError */
|
48
|
+
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
49
|
+
/** @typedef {import("./StatsFactory")} StatsFactory */
|
50
|
+
/** @typedef {import("./StatsFactory").StatsFactoryContext} StatsFactoryContext */
|
51
|
+
|
47
52
|
/**
|
48
53
|
* @template T
|
49
54
|
* @typedef {import("../util/comparators").Comparator<T>} Comparator<T>
|
50
55
|
*/
|
51
|
-
|
56
|
+
|
52
57
|
/**
|
53
58
|
* @template T, R
|
54
59
|
* @typedef {import("../util/smartGrouping").GroupConfig<T, R>} GroupConfig
|
55
60
|
*/
|
56
|
-
|
57
|
-
/** @typedef {
|
58
|
-
/** @typedef {Record<string, EXPECTED_ANY> & KnownStatsCompilation} StatsCompilation */
|
61
|
+
|
62
|
+
/** @typedef {KnownStatsCompilation & Record<string, EXPECTED_ANY>} StatsCompilation */
|
59
63
|
/**
|
60
64
|
* @typedef {object} KnownStatsCompilation
|
61
65
|
* @property {any=} env
|
@@ -83,7 +87,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
83
87
|
* @property {Record<string, StatsLogging>=} logging
|
84
88
|
*/
|
85
89
|
|
86
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
90
|
+
/** @typedef {KnownStatsLogging & Record<string, EXPECTED_ANY>} StatsLogging */
|
87
91
|
/**
|
88
92
|
* @typedef {object} KnownStatsLogging
|
89
93
|
* @property {StatsLoggingEntry[]} entries
|
@@ -91,18 +95,18 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
91
95
|
* @property {boolean} debug
|
92
96
|
*/
|
93
97
|
|
94
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
98
|
+
/** @typedef {KnownStatsLoggingEntry & Record<string, EXPECTED_ANY>} StatsLoggingEntry */
|
95
99
|
/**
|
96
100
|
* @typedef {object} KnownStatsLoggingEntry
|
97
101
|
* @property {string} type
|
98
102
|
* @property {string=} message
|
99
103
|
* @property {string[]=} trace
|
100
104
|
* @property {StatsLoggingEntry[]=} children
|
101
|
-
* @property {
|
105
|
+
* @property {EXPECTED_ANY[]=} args
|
102
106
|
* @property {number=} time
|
103
107
|
*/
|
104
108
|
|
105
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
109
|
+
/** @typedef {KnownStatsAsset & Record<string, EXPECTED_ANY>} StatsAsset */
|
106
110
|
/**
|
107
111
|
* @typedef {object} KnownStatsAsset
|
108
112
|
* @property {string} type
|
@@ -123,7 +127,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
123
127
|
* @property {boolean=} isOverSizeLimit
|
124
128
|
*/
|
125
129
|
|
126
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
130
|
+
/** @typedef {KnownStatsChunkGroup & Record<string, EXPECTED_ANY>} StatsChunkGroup */
|
127
131
|
/**
|
128
132
|
* @typedef {object} KnownStatsChunkGroup
|
129
133
|
* @property {(string | null)=} name
|
@@ -139,7 +143,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
139
143
|
* @property {boolean=} isOverSizeLimit
|
140
144
|
*/
|
141
145
|
|
142
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
146
|
+
/** @typedef {KnownStatsModule & Record<string, EXPECTED_ANY>} StatsModule */
|
143
147
|
/**
|
144
148
|
* @typedef {object} KnownStatsModule
|
145
149
|
* @property {string=} type
|
@@ -183,7 +187,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
183
187
|
* @property {ReturnType<Source["source"]>=} source
|
184
188
|
*/
|
185
189
|
|
186
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
190
|
+
/** @typedef {KnownStatsProfile & Record<string, EXPECTED_ANY>} StatsProfile */
|
187
191
|
/**
|
188
192
|
* @typedef {object} KnownStatsProfile
|
189
193
|
* @property {number} total
|
@@ -198,7 +202,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
198
202
|
* @property {number} dependencies
|
199
203
|
*/
|
200
204
|
|
201
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
205
|
+
/** @typedef {KnownStatsModuleIssuer & Record<string, EXPECTED_ANY>} StatsModuleIssuer */
|
202
206
|
/**
|
203
207
|
* @typedef {object} KnownStatsModuleIssuer
|
204
208
|
* @property {string} identifier
|
@@ -207,7 +211,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
207
211
|
* @property {StatsProfile} profile
|
208
212
|
*/
|
209
213
|
|
210
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
214
|
+
/** @typedef {KnownStatsModuleReason & Record<string, EXPECTED_ANY>} StatsModuleReason */
|
211
215
|
/**
|
212
216
|
* @typedef {object} KnownStatsModuleReason
|
213
217
|
* @property {string | null} moduleIdentifier
|
@@ -224,7 +228,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
224
228
|
* @property {(string | number | null)=} resolvedModuleId
|
225
229
|
*/
|
226
230
|
|
227
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
231
|
+
/** @typedef {KnownStatsChunk & Record<string, EXPECTED_ANY>} StatsChunk */
|
228
232
|
/**
|
229
233
|
* @typedef {object} KnownStatsChunk
|
230
234
|
* @property {boolean} rendered
|
@@ -250,7 +254,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
250
254
|
* @property {StatsChunkOrigin[]=} origins
|
251
255
|
*/
|
252
256
|
|
253
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
257
|
+
/** @typedef {KnownStatsChunkOrigin & Record<string, EXPECTED_ANY>} StatsChunkOrigin */
|
254
258
|
/**
|
255
259
|
* @typedef {object} KnownStatsChunkOrigin
|
256
260
|
* @property {string} module
|
@@ -261,7 +265,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
261
265
|
* @property {(string | number)=} moduleId
|
262
266
|
*/
|
263
267
|
|
264
|
-
/** @typedef { Record<string, EXPECTED_ANY>
|
268
|
+
/** @typedef {KnownStatsModuleTraceItem & Record<string, EXPECTED_ANY>} StatsModuleTraceItem */
|
265
269
|
/**
|
266
270
|
* @typedef {object} KnownStatsModuleTraceItem
|
267
271
|
* @property {string=} originIdentifier
|
@@ -273,13 +277,13 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
273
277
|
* @property {(string|number)=} moduleId
|
274
278
|
*/
|
275
279
|
|
276
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
280
|
+
/** @typedef {KnownStatsModuleTraceDependency & Record<string, EXPECTED_ANY>} StatsModuleTraceDependency */
|
277
281
|
/**
|
278
282
|
* @typedef {object} KnownStatsModuleTraceDependency
|
279
283
|
* @property {string=} loc
|
280
284
|
*/
|
281
285
|
|
282
|
-
/** @typedef {Record<string, EXPECTED_ANY>
|
286
|
+
/** @typedef {KnownStatsError & Record<string, EXPECTED_ANY>} StatsError */
|
283
287
|
/**
|
284
288
|
* @typedef {object} KnownStatsError
|
285
289
|
* @property {string} message
|
@@ -293,8 +297,9 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
293
297
|
* @property {ChunkId=} chunkId
|
294
298
|
* @property {string|number=} moduleId
|
295
299
|
* @property {StatsModuleTraceItem[]=} moduleTrace
|
296
|
-
* @property {
|
300
|
+
* @property {string=} details
|
297
301
|
* @property {string=} stack
|
302
|
+
* @property {string=} compilerPath
|
298
303
|
*/
|
299
304
|
|
300
305
|
/** @typedef {Asset & { type: string, related: PreprocessedAsset[] | undefined }} PreprocessedAsset */
|
@@ -328,7 +333,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
|
|
328
333
|
* @template T
|
329
334
|
* @template I
|
330
335
|
* @param {Iterable<T>} items items to select from
|
331
|
-
* @param {
|
336
|
+
* @param {(item: T) => Iterable<I>} selector selector function to select values from item
|
332
337
|
* @returns {I[]} array of values
|
333
338
|
*/
|
334
339
|
const uniqueArray = (items, selector) => {
|
@@ -346,7 +351,7 @@ const uniqueArray = (items, selector) => {
|
|
346
351
|
* @template T
|
347
352
|
* @template I
|
348
353
|
* @param {Iterable<T>} items items to select from
|
349
|
-
* @param {
|
354
|
+
* @param {(item: T) => Iterable<I>} selector selector function to select values from item
|
350
355
|
* @param {Comparator<I>} comparator comparator function
|
351
356
|
* @returns {I[]} array of values
|
352
357
|
*/
|
@@ -374,8 +379,9 @@ const mapObject = (obj, fn) => {
|
|
374
379
|
};
|
375
380
|
|
376
381
|
/**
|
382
|
+
* @template T
|
377
383
|
* @param {Compilation} compilation the compilation
|
378
|
-
* @param {
|
384
|
+
* @param {(compilation: Compilation, name: string) => T[]} getItems get items
|
379
385
|
* @returns {number} total number
|
380
386
|
*/
|
381
387
|
const countWithChildren = (compilation, getItems) => {
|
@@ -396,7 +402,9 @@ const EXTRACT_ERROR = {
|
|
396
402
|
object.message = error;
|
397
403
|
} else {
|
398
404
|
if (error.chunk) {
|
399
|
-
object.chunkName =
|
405
|
+
object.chunkName =
|
406
|
+
/** @type {string | undefined} */
|
407
|
+
(error.chunk.name);
|
400
408
|
object.chunkEntry = error.chunk.hasRuntime();
|
401
409
|
object.chunkInitial = error.chunk.canBeInitial();
|
402
410
|
}
|
@@ -904,7 +912,7 @@ const SIMPLE_EXTRACTORS = {
|
|
904
912
|
object.warningsCount = countWithChildren(compilation, (c, childType) => {
|
905
913
|
if (
|
906
914
|
!warningsFilter &&
|
907
|
-
/** @type {
|
915
|
+
/** @type {KnownNormalizedStatsOptions["warningsFilter"]} */
|
908
916
|
(warningsFilter).length === 0
|
909
917
|
)
|
910
918
|
return cachedGetWarnings(c);
|
@@ -1574,7 +1582,7 @@ const SIMPLE_EXTRACTORS = {
|
|
1574
1582
|
}
|
1575
1583
|
};
|
1576
1584
|
|
1577
|
-
/** @type {Record<string, Record<string, (thing:
|
1585
|
+
/** @type {Record<string, Record<string, (thing: ModuleGraphConnection, context: StatsFactoryContext, options: NormalizedStatsOptions, idx: number, i: number) => boolean | undefined>>} */
|
1578
1586
|
const FILTER = {
|
1579
1587
|
"module.reasons": {
|
1580
1588
|
"!orphanModules": (reason, { compilation: { chunkGraph } }) => {
|
@@ -1588,7 +1596,7 @@ const FILTER = {
|
|
1588
1596
|
}
|
1589
1597
|
};
|
1590
1598
|
|
1591
|
-
/** @type {Record<string, Record<string, (thing: KnownStatsError, context: StatsFactoryContext, options: NormalizedStatsOptions) => boolean | undefined>>} */
|
1599
|
+
/** @type {Record<string, Record<string, (thing: KnownStatsError, context: StatsFactoryContext, options: NormalizedStatsOptions, idx: number, i: number) => boolean | undefined>>} */
|
1592
1600
|
const FILTER_RESULTS = {
|
1593
1601
|
"compilation.warnings": {
|
1594
1602
|
warningsFilter: util.deprecate(
|
@@ -1604,39 +1612,20 @@ const FILTER_RESULTS = {
|
|
1604
1612
|
}
|
1605
1613
|
};
|
1606
1614
|
|
1607
|
-
/**
|
1615
|
+
/**
|
1616
|
+
* @type {Record<string, (comparators: Comparator<Module>[], context: StatsFactoryContext) => void>}
|
1617
|
+
*/
|
1608
1618
|
const MODULES_SORTER = {
|
1609
1619
|
_: (comparators, { compilation: { moduleGraph } }) => {
|
1610
1620
|
comparators.push(
|
1611
|
-
compareSelect(
|
1612
|
-
|
1613
|
-
|
1614
|
-
* @returns {number | null} depth
|
1615
|
-
*/
|
1616
|
-
m => moduleGraph.getDepth(m),
|
1617
|
-
compareNumbers
|
1618
|
-
),
|
1619
|
-
compareSelect(
|
1620
|
-
/**
|
1621
|
-
* @param {Module} m module
|
1622
|
-
* @returns {number | null} index
|
1623
|
-
*/
|
1624
|
-
m => moduleGraph.getPreOrderIndex(m),
|
1625
|
-
compareNumbers
|
1626
|
-
),
|
1627
|
-
compareSelect(
|
1628
|
-
/**
|
1629
|
-
* @param {Module} m module
|
1630
|
-
* @returns {string} identifier
|
1631
|
-
*/
|
1632
|
-
m => m.identifier(),
|
1633
|
-
compareIds
|
1634
|
-
)
|
1621
|
+
compareSelect(m => moduleGraph.getDepth(m), compareNumbers),
|
1622
|
+
compareSelect(m => moduleGraph.getPreOrderIndex(m), compareNumbers),
|
1623
|
+
compareSelect(m => m.identifier(), compareIds)
|
1635
1624
|
);
|
1636
1625
|
}
|
1637
1626
|
};
|
1638
1627
|
|
1639
|
-
/** @type {Record<string, Record<string, (comparators:
|
1628
|
+
/** @type {Record<string, Record<string, (comparators: Comparator<any>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void>>} */
|
1640
1629
|
const SORTERS = {
|
1641
1630
|
"compilation.chunks": {
|
1642
1631
|
_: comparators => {
|
@@ -1924,7 +1913,9 @@ const errorsSpaceLimit = (errors, max) => {
|
|
1924
1913
|
const error = errors[i++];
|
1925
1914
|
result.push({
|
1926
1915
|
...error,
|
1927
|
-
details:
|
1916
|
+
details:
|
1917
|
+
/** @type {string} */
|
1918
|
+
(error.details).split("\n").slice(0, -overLimit).join("\n"),
|
1928
1919
|
filteredDetails: overLimit
|
1929
1920
|
});
|
1930
1921
|
filtered = errors.length - i;
|
@@ -2150,7 +2141,7 @@ const ASSETS_GROUPERS = {
|
|
2150
2141
|
|
2151
2142
|
/** @typedef {Record<string, (groupConfigs: GroupConfig<KnownStatsModule, TODO>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void>} ModulesGroupers */
|
2152
2143
|
|
2153
|
-
/** @type {
|
2144
|
+
/** @type {(type: "module" | "chunk" | "root-of-chunk" | "nested") => ModulesGroupers} */
|
2154
2145
|
const MODULES_GROUPERS = type => ({
|
2155
2146
|
_: (groupConfigs, context, options) => {
|
2156
2147
|
/**
|
@@ -2312,7 +2303,7 @@ const MODULES_GROUPERS = type => ({
|
|
2312
2303
|
}
|
2313
2304
|
});
|
2314
2305
|
|
2315
|
-
/** @typedef {Record<string, (groupConfigs:
|
2306
|
+
/** @typedef {Record<string, (groupConfigs: GroupConfig<KnownStatsModuleReason, TODO>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void>} ModuleReasonsGroupers */
|
2316
2307
|
|
2317
2308
|
/** @type {ModuleReasonsGroupers} */
|
2318
2309
|
const MODULE_REASONS_GROUPERS = {
|
@@ -2366,15 +2357,15 @@ const sortOrderRegular = field => {
|
|
2366
2357
|
|
2367
2358
|
/**
|
2368
2359
|
* @template T
|
2369
|
-
* @param {string} field field name
|
2370
|
-
* @returns {
|
2360
|
+
* @param {string | false} field field name
|
2361
|
+
* @returns {(a: T, b: T) => 0 | 1 | -1} comparators
|
2371
2362
|
*/
|
2372
2363
|
const sortByField = field => {
|
2373
2364
|
if (!field) {
|
2374
2365
|
/**
|
2375
|
-
* @param {
|
2376
|
-
* @param {
|
2377
|
-
* @returns {-1|0|1} zero
|
2366
|
+
* @param {T} a first
|
2367
|
+
* @param {T} b second
|
2368
|
+
* @returns {-1 | 0 | 1} zero
|
2378
2369
|
*/
|
2379
2370
|
const noSort = (a, b) => 0;
|
2380
2371
|
return noSort;
|
@@ -2432,9 +2423,10 @@ const RESULT_SORTERS = {
|
|
2432
2423
|
};
|
2433
2424
|
|
2434
2425
|
/**
|
2435
|
-
* @
|
2426
|
+
* @template T
|
2427
|
+
* @param {Record<string, Record<string, T>>} config the config see above
|
2436
2428
|
* @param {NormalizedStatsOptions} options stats options
|
2437
|
-
* @param {
|
2429
|
+
* @param {(hookFor: string, fn: T) => void} fn handler function called for every active line in config
|
2438
2430
|
* @returns {void}
|
2439
2431
|
*/
|
2440
2432
|
const iterateConfig = (config, options, fn) => {
|
@@ -2523,13 +2515,18 @@ class DefaultStatsFactoryPlugin {
|
|
2523
2515
|
* @param {NormalizedStatsOptions} options stats options
|
2524
2516
|
*/
|
2525
2517
|
(stats, options) => {
|
2526
|
-
iterateConfig(
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
|
2532
|
-
|
2518
|
+
iterateConfig(
|
2519
|
+
/** @type {TODO} */
|
2520
|
+
(SIMPLE_EXTRACTORS),
|
2521
|
+
options,
|
2522
|
+
(hookFor, fn) => {
|
2523
|
+
stats.hooks.extract
|
2524
|
+
.for(hookFor)
|
2525
|
+
.tap("DefaultStatsFactoryPlugin", (obj, data, ctx) =>
|
2526
|
+
fn(obj, data, ctx, options, stats)
|
2527
|
+
);
|
2528
|
+
}
|
2529
|
+
);
|
2533
2530
|
iterateConfig(FILTER, options, (hookFor, fn) => {
|
2534
2531
|
stats.hooks.filter
|
2535
2532
|
.for(hookFor)
|
@@ -2558,13 +2555,18 @@ class DefaultStatsFactoryPlugin {
|
|
2558
2555
|
fn(comparators, ctx, options)
|
2559
2556
|
);
|
2560
2557
|
});
|
2561
|
-
iterateConfig(
|
2562
|
-
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2567
|
-
|
2558
|
+
iterateConfig(
|
2559
|
+
/** @type {TODO} */
|
2560
|
+
(RESULT_GROUPERS),
|
2561
|
+
options,
|
2562
|
+
(hookFor, fn) => {
|
2563
|
+
stats.hooks.groupResults
|
2564
|
+
.for(hookFor)
|
2565
|
+
.tap("DefaultStatsFactoryPlugin", (groupConfigs, ctx) =>
|
2566
|
+
fn(groupConfigs, ctx, options)
|
2567
|
+
);
|
2568
|
+
}
|
2569
|
+
);
|
2568
2570
|
for (const key of Object.keys(ITEM_NAMES)) {
|
2569
2571
|
const itemName = ITEM_NAMES[key];
|
2570
2572
|
stats.hooks.getItemName
|
@@ -8,26 +8,30 @@
|
|
8
8
|
const RequestShortener = require("../RequestShortener");
|
9
9
|
|
10
10
|
/** @typedef {import("../../declarations/WebpackOptions").StatsOptions} StatsOptions */
|
11
|
+
/** @typedef {import("../../declarations/WebpackOptions").StatsValue} StatsValue */
|
11
12
|
/** @typedef {import("../Compilation")} Compilation */
|
12
13
|
/** @typedef {import("../Compilation").CreateStatsOptionsContext} CreateStatsOptionsContext */
|
14
|
+
/** @typedef {import("../Compilation").KnownNormalizedStatsOptions} KnownNormalizedStatsOptions */
|
15
|
+
/** @typedef {import("../Compilation").NormalizedStatsOptions} NormalizedStatsOptions */
|
13
16
|
/** @typedef {import("../Compiler")} Compiler */
|
14
17
|
/** @typedef {import("./DefaultStatsFactoryPlugin").StatsError} StatsError */
|
15
18
|
|
16
19
|
/**
|
17
|
-
* @param {
|
20
|
+
* @param {Partial<NormalizedStatsOptions>} options options
|
18
21
|
* @param {StatsOptions} defaults default options
|
19
22
|
*/
|
20
23
|
const applyDefaults = (options, defaults) => {
|
21
24
|
for (const _k of Object.keys(defaults)) {
|
22
25
|
const key = /** @type {keyof StatsOptions} */ (_k);
|
23
26
|
if (typeof options[key] === "undefined") {
|
24
|
-
/** @type {
|
25
|
-
|
27
|
+
options[/** @type {keyof NormalizedStatsOptions} */ (key)] =
|
28
|
+
defaults[key];
|
26
29
|
}
|
27
30
|
}
|
28
31
|
};
|
29
32
|
|
30
|
-
/** @typedef {
|
33
|
+
/** @typedef {{ [Key in Exclude<StatsValue, boolean | object | "normal">]: StatsOptions }} NamedPresets */
|
34
|
+
|
31
35
|
/** @type {NamedPresets} */
|
32
36
|
const NAMED_PRESETS = {
|
33
37
|
verbose: {
|
@@ -136,31 +140,31 @@ const NAMED_PRESETS = {
|
|
136
140
|
};
|
137
141
|
|
138
142
|
/**
|
139
|
-
* @param {
|
143
|
+
* @param {Partial<NormalizedStatsOptions>} all stats option
|
140
144
|
* @returns {boolean} true when enabled, otherwise false
|
141
145
|
*/
|
142
146
|
const NORMAL_ON = ({ all }) => all !== false;
|
143
147
|
/**
|
144
|
-
* @param {
|
148
|
+
* @param {Partial<NormalizedStatsOptions>} all stats option
|
145
149
|
* @returns {boolean} true when enabled, otherwise false
|
146
150
|
*/
|
147
151
|
const NORMAL_OFF = ({ all }) => all === true;
|
148
152
|
/**
|
149
|
-
* @param {
|
153
|
+
* @param {Partial<NormalizedStatsOptions>} all stats option
|
150
154
|
* @param {CreateStatsOptionsContext} forToString stats options context
|
151
155
|
* @returns {boolean} true when enabled, otherwise false
|
152
156
|
*/
|
153
157
|
const ON_FOR_TO_STRING = ({ all }, { forToString }) =>
|
154
158
|
forToString ? all !== false : all === true;
|
155
159
|
/**
|
156
|
-
* @param {
|
160
|
+
* @param {Partial<NormalizedStatsOptions>} all stats option
|
157
161
|
* @param {CreateStatsOptionsContext} forToString stats options context
|
158
162
|
* @returns {boolean} true when enabled, otherwise false
|
159
163
|
*/
|
160
164
|
const OFF_FOR_TO_STRING = ({ all }, { forToString }) =>
|
161
165
|
forToString ? all === true : all !== false;
|
162
166
|
/**
|
163
|
-
* @param {
|
167
|
+
* @param {Partial<NormalizedStatsOptions>} all stats option
|
164
168
|
* @param {CreateStatsOptionsContext} forToString stats options context
|
165
169
|
* @returns {boolean | "auto"} true when enabled, otherwise false
|
166
170
|
*/
|
@@ -171,9 +175,10 @@ const AUTO_FOR_TO_STRING = ({ all }, { forToString }) => {
|
|
171
175
|
return true;
|
172
176
|
};
|
173
177
|
|
174
|
-
/** @typedef {
|
178
|
+
/** @typedef {keyof NormalizedStatsOptions} DefaultsKeys */
|
179
|
+
/** @typedef {{ [Key in DefaultsKeys]: (options: Partial<NormalizedStatsOptions>, context: CreateStatsOptionsContext, compilation: Compilation) => NormalizedStatsOptions[Key] | RequestShortener }} Defaults */
|
175
180
|
|
176
|
-
/** @type {Defaults} */
|
181
|
+
/** @type {Partial<Defaults>} */
|
177
182
|
const DEFAULTS = {
|
178
183
|
context: (options, context, compilation) => compilation.compiler.context,
|
179
184
|
requestShortener: (options, context, compilation) =>
|
@@ -274,32 +279,37 @@ const DEFAULTS = {
|
|
274
279
|
};
|
275
280
|
|
276
281
|
/**
|
277
|
-
* @
|
278
|
-
* @
|
282
|
+
* @template {string} T
|
283
|
+
* @param {string | ({ test: (value: T) => boolean }) | ((value: T, ...args: EXPECTED_ANY[]) => boolean) | boolean} item item to normalize
|
284
|
+
* @returns {(value: T, ...args: EXPECTED_ANY[]) => boolean} normalize fn
|
279
285
|
*/
|
280
286
|
const normalizeFilter = item => {
|
281
287
|
if (typeof item === "string") {
|
282
288
|
const regExp = new RegExp(
|
283
289
|
`[\\\\/]${item.replace(/[-[\]{}()*+?.\\^$|]/g, "\\$&")}([\\\\/]|$|!|\\?)`
|
284
290
|
);
|
285
|
-
return ident => regExp.test(ident);
|
291
|
+
return ident => regExp.test(/** @type {T} */ (ident));
|
286
292
|
}
|
287
293
|
if (item && typeof item === "object" && typeof item.test === "function") {
|
288
294
|
return ident => item.test(ident);
|
289
295
|
}
|
290
|
-
if (typeof item === "function") {
|
291
|
-
return item;
|
292
|
-
}
|
293
296
|
if (typeof item === "boolean") {
|
294
297
|
return () => item;
|
295
298
|
}
|
299
|
+
|
300
|
+
return /** @type {(value: T, ...args: EXPECTED_ANY[]) => boolean} */ (item);
|
296
301
|
};
|
297
302
|
|
298
|
-
/** @
|
303
|
+
/** @typedef {keyof (KnownNormalizedStatsOptions | StatsOptions)} NormalizerKeys */
|
304
|
+
/** @typedef {{ [Key in NormalizerKeys]: (value: StatsOptions[Key]) => KnownNormalizedStatsOptions[Key] }} Normalizers */
|
305
|
+
|
306
|
+
/** @type {Partial<Normalizers>} */
|
299
307
|
const NORMALIZER = {
|
300
308
|
excludeModules: value => {
|
301
309
|
if (!Array.isArray(value)) {
|
302
|
-
value = value
|
310
|
+
value = value
|
311
|
+
? /** @type {KnownNormalizedStatsOptions["excludeModules"]} */ ([value])
|
312
|
+
: [];
|
303
313
|
}
|
304
314
|
return value.map(normalizeFilter);
|
305
315
|
},
|
@@ -342,11 +352,13 @@ const NORMALIZER = {
|
|
342
352
|
},
|
343
353
|
logging: value => {
|
344
354
|
if (value === true) value = "log";
|
345
|
-
return value;
|
355
|
+
return /** @type {KnownNormalizedStatsOptions["logging"]} */ (value);
|
346
356
|
},
|
347
357
|
loggingDebug: value => {
|
348
358
|
if (!Array.isArray(value)) {
|
349
|
-
value = value
|
359
|
+
value = value
|
360
|
+
? /** @type {KnownNormalizedStatsOptions["loggingDebug"]} */ ([value])
|
361
|
+
: [];
|
350
362
|
}
|
351
363
|
return value.map(normalizeFilter);
|
352
364
|
}
|
@@ -373,10 +385,18 @@ class DefaultStatsPresetPlugin {
|
|
373
385
|
(options, context) => {
|
374
386
|
for (const key of Object.keys(DEFAULTS)) {
|
375
387
|
if (options[key] === undefined)
|
376
|
-
options[key] =
|
388
|
+
options[key] =
|
389
|
+
/** @type {Defaults[DefaultsKeys]} */
|
390
|
+
(DEFAULTS[/** @type {DefaultsKeys} */ (key)])(
|
391
|
+
options,
|
392
|
+
context,
|
393
|
+
compilation
|
394
|
+
);
|
377
395
|
}
|
378
396
|
for (const key of Object.keys(NORMALIZER)) {
|
379
|
-
options[key] =
|
397
|
+
options[key] =
|
398
|
+
/** @type {TODO} */
|
399
|
+
(NORMALIZER[/** @type {NormalizerKeys} */ (key)])(options[key]);
|
380
400
|
}
|
381
401
|
}
|
382
402
|
);
|