webpack 5.93.0 → 5.94.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +126 -69
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +26 -24
- package/lib/css/CssGenerator.js +9 -4
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +91 -69
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +80 -48
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +8 -11
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +15 -14
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -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 +1 -0
- package/types.d.ts +667 -347
@@ -119,7 +119,7 @@ class LimitChunkCountPlugin {
|
|
119
119
|
/** @type {Map<Chunk, Set<ChunkCombination>>} */
|
120
120
|
const combinationsByChunk = new Map();
|
121
121
|
|
122
|
-
orderedChunks.
|
122
|
+
for (const [bIdx, b] of orderedChunks.entries()) {
|
123
123
|
// create combination pairs with size and integrated size
|
124
124
|
for (let aIdx = 0; aIdx < bIdx; aIdx++) {
|
125
125
|
const a = orderedChunks[aIdx];
|
@@ -149,8 +149,7 @@ class LimitChunkCountPlugin {
|
|
149
149
|
addToSetMap(combinationsByChunk, a, c);
|
150
150
|
addToSetMap(combinationsByChunk, b, c);
|
151
151
|
}
|
152
|
-
|
153
|
-
});
|
152
|
+
}
|
154
153
|
|
155
154
|
// list of modified chunks during this run
|
156
155
|
// combinations affected by this change are skipped to allow
|
@@ -23,7 +23,7 @@ class MinMaxSizeWarning extends WebpackError {
|
|
23
23
|
: `Cache group ${keys[0]}`;
|
24
24
|
}
|
25
25
|
super(
|
26
|
-
|
26
|
+
"SplitChunksPlugin\n" +
|
27
27
|
`${keysMessage}\n` +
|
28
28
|
`Configured minSize (${SizeFormatHelpers.formatSize(minSize)}) is ` +
|
29
29
|
`bigger than maxSize (${SizeFormatHelpers.formatSize(maxSize)}).\n` +
|
@@ -45,19 +45,9 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
45
45
|
* @param {string} msg message
|
46
46
|
* @returns {string} formatted message
|
47
47
|
*/
|
48
|
-
const formatBailoutReason = msg => {
|
49
|
-
return "ModuleConcatenation bailout: " + msg;
|
50
|
-
};
|
48
|
+
const formatBailoutReason = msg => `ModuleConcatenation bailout: ${msg}`;
|
51
49
|
|
52
50
|
class ModuleConcatenationPlugin {
|
53
|
-
/**
|
54
|
-
* @param {TODO} options options
|
55
|
-
*/
|
56
|
-
constructor(options) {
|
57
|
-
if (typeof options !== "object") options = {};
|
58
|
-
this.options = options;
|
59
|
-
}
|
60
|
-
|
61
51
|
/**
|
62
52
|
* Apply the plugin
|
63
53
|
* @param {Compiler} compiler the compiler instance
|
@@ -130,15 +120,14 @@ class ModuleConcatenationPlugin {
|
|
130
120
|
requestShortener
|
131
121
|
)}${reasonWithPrefix}`
|
132
122
|
);
|
133
|
-
} else {
|
134
|
-
return formatBailoutReason(
|
135
|
-
`Cannot concat with ${module.readableIdentifier(
|
136
|
-
requestShortener
|
137
|
-
)} because of ${problem.readableIdentifier(
|
138
|
-
requestShortener
|
139
|
-
)}${reasonWithPrefix}`
|
140
|
-
);
|
141
123
|
}
|
124
|
+
return formatBailoutReason(
|
125
|
+
`Cannot concat with ${module.readableIdentifier(
|
126
|
+
requestShortener
|
127
|
+
)} because of ${problem.readableIdentifier(
|
128
|
+
requestShortener
|
129
|
+
)}${reasonWithPrefix}`
|
130
|
+
);
|
142
131
|
};
|
143
132
|
|
144
133
|
compilation.hooks.optimizeChunkModules.tapAsync(
|
@@ -170,13 +159,13 @@ class ModuleConcatenationPlugin {
|
|
170
159
|
|
171
160
|
// Must not be an async module
|
172
161
|
if (moduleGraph.isAsync(module)) {
|
173
|
-
setBailoutReason(module,
|
162
|
+
setBailoutReason(module, "Module is async");
|
174
163
|
continue;
|
175
164
|
}
|
176
165
|
|
177
166
|
// Must be in strict mode
|
178
167
|
if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
|
179
|
-
setBailoutReason(module,
|
168
|
+
setBailoutReason(module, "Module is not in strict mode");
|
180
169
|
continue;
|
181
170
|
}
|
182
171
|
|
@@ -189,11 +178,10 @@ class ModuleConcatenationPlugin {
|
|
189
178
|
// Exports must be known (and not dynamic)
|
190
179
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
191
180
|
const relevantExports = exportsInfo.getRelevantExports(undefined);
|
192
|
-
const unknownReexports = relevantExports.filter(
|
193
|
-
|
181
|
+
const unknownReexports = relevantExports.filter(
|
182
|
+
exportInfo =>
|
194
183
|
exportInfo.isReexport() && !exportInfo.getTarget(moduleGraph)
|
195
|
-
|
196
|
-
});
|
184
|
+
);
|
197
185
|
if (unknownReexports.length > 0) {
|
198
186
|
setBailoutReason(
|
199
187
|
module,
|
@@ -210,9 +198,7 @@ class ModuleConcatenationPlugin {
|
|
210
198
|
|
211
199
|
// Root modules must have a static list of exports
|
212
200
|
const unknownProvidedExports = relevantExports.filter(
|
213
|
-
exportInfo =>
|
214
|
-
return exportInfo.provided !== true;
|
215
|
-
}
|
201
|
+
exportInfo => exportInfo.provided !== true
|
216
202
|
);
|
217
203
|
if (unknownProvidedExports.length > 0) {
|
218
204
|
setBailoutReason(
|
@@ -245,12 +231,11 @@ class ModuleConcatenationPlugin {
|
|
245
231
|
// modules with lower depth are more likely suited as roots
|
246
232
|
// this improves performance, because modules already selected as inner are skipped
|
247
233
|
logger.time("sort relevant modules");
|
248
|
-
relevantModules.sort(
|
249
|
-
|
234
|
+
relevantModules.sort(
|
235
|
+
(a, b) =>
|
250
236
|
/** @type {number} */ (moduleGraph.getDepth(a)) -
|
251
237
|
/** @type {number} */ (moduleGraph.getDepth(b))
|
252
|
-
|
253
|
-
});
|
238
|
+
);
|
254
239
|
logger.timeEnd("sort relevant modules");
|
255
240
|
|
256
241
|
/** @type {Statistics} */
|
@@ -279,7 +264,7 @@ class ModuleConcatenationPlugin {
|
|
279
264
|
// TODO reconsider that when it's only used in a different runtime
|
280
265
|
if (usedAsInner.has(currentRoot)) continue;
|
281
266
|
|
282
|
-
let chunkRuntime
|
267
|
+
let chunkRuntime;
|
283
268
|
for (const r of chunkGraph.getModuleRuntimes(currentRoot)) {
|
284
269
|
chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
|
285
270
|
}
|
@@ -376,11 +361,9 @@ class ModuleConcatenationPlugin {
|
|
376
361
|
// to get the biggest groups possible. Used modules are marked with usedModules
|
377
362
|
// TODO: Allow to reuse existing configuration while trying to add dependencies.
|
378
363
|
// This would improve performance. O(n^2) -> O(n)
|
379
|
-
logger.time(
|
380
|
-
concatConfigurations.sort((a, b) =>
|
381
|
-
|
382
|
-
});
|
383
|
-
logger.timeEnd(`sort concat configurations`);
|
364
|
+
logger.time("sort concat configurations");
|
365
|
+
concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
|
366
|
+
logger.timeEnd("sort concat configurations");
|
384
367
|
const usedModules = new Set();
|
385
368
|
|
386
369
|
logger.time("create concatenated modules");
|
@@ -399,7 +382,7 @@ class ModuleConcatenationPlugin {
|
|
399
382
|
|
400
383
|
// Create a new ConcatenatedModule
|
401
384
|
ConcatenatedModule.getCompilationHooks(compilation);
|
402
|
-
|
385
|
+
const newModule = ConcatenatedModule.create(
|
403
386
|
rootModule,
|
404
387
|
modules,
|
405
388
|
concatConfiguration.runtime,
|
@@ -448,15 +431,12 @@ class ModuleConcatenationPlugin {
|
|
448
431
|
moduleGraph.copyOutgoingModuleConnections(
|
449
432
|
m,
|
450
433
|
newModule,
|
451
|
-
c =>
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
)
|
458
|
-
);
|
459
|
-
}
|
434
|
+
c =>
|
435
|
+
c.originModule === m &&
|
436
|
+
!(
|
437
|
+
c.dependency instanceof HarmonyImportDependency &&
|
438
|
+
modules.has(c.module)
|
439
|
+
)
|
460
440
|
);
|
461
441
|
// remove module from chunk
|
462
442
|
for (const chunk of chunkGraph.getModuleChunksIterable(
|
@@ -639,11 +619,11 @@ class ModuleConcatenationPlugin {
|
|
639
619
|
incomingConnections.get(null) || incomingConnections.get(undefined);
|
640
620
|
if (incomingConnectionsFromNonModules) {
|
641
621
|
const activeNonModulesConnections =
|
642
|
-
incomingConnectionsFromNonModules.filter(connection =>
|
622
|
+
incomingConnectionsFromNonModules.filter(connection =>
|
643
623
|
// We are not interested in inactive connections
|
644
624
|
// or connections without dependency
|
645
|
-
|
646
|
-
|
625
|
+
connection.isActive(runtime)
|
626
|
+
);
|
647
627
|
if (activeNonModulesConnections.length > 0) {
|
648
628
|
/**
|
649
629
|
* @param {RequestShortener} requestShortener request shortener
|
@@ -676,7 +656,7 @@ class ModuleConcatenationPlugin {
|
|
676
656
|
if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
|
677
657
|
|
678
658
|
// We don't care for connections from other runtimes
|
679
|
-
let originRuntime
|
659
|
+
let originRuntime;
|
680
660
|
for (const r of chunkGraph.getModuleRuntimes(originModule)) {
|
681
661
|
originRuntime = mergeRuntimeOwned(originRuntime, r);
|
682
662
|
}
|
@@ -743,19 +723,20 @@ class ModuleConcatenationPlugin {
|
|
743
723
|
*/
|
744
724
|
const problem = requestShortener => {
|
745
725
|
const names = Array.from(nonHarmonyConnections)
|
746
|
-
.map(
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
726
|
+
.map(
|
727
|
+
([originModule, connections]) =>
|
728
|
+
`${originModule.readableIdentifier(
|
729
|
+
requestShortener
|
730
|
+
)} (referenced with ${Array.from(
|
731
|
+
new Set(
|
732
|
+
connections
|
733
|
+
.map(c => c.dependency && c.dependency.type)
|
734
|
+
.filter(Boolean)
|
735
|
+
)
|
754
736
|
)
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
})
|
737
|
+
.sort()
|
738
|
+
.join(", ")})`
|
739
|
+
)
|
759
740
|
.sort();
|
760
741
|
return `Module ${module.readableIdentifier(
|
761
742
|
requestShortener
|
@@ -779,19 +760,15 @@ class ModuleConcatenationPlugin {
|
|
779
760
|
/** @type {false | RuntimeSpec} */
|
780
761
|
let currentRuntimeCondition = false;
|
781
762
|
for (const connection of connections) {
|
782
|
-
const runtimeCondition = filterRuntime(runtime, runtime =>
|
783
|
-
|
784
|
-
|
763
|
+
const runtimeCondition = filterRuntime(runtime, runtime =>
|
764
|
+
connection.isTargetActive(runtime)
|
765
|
+
);
|
785
766
|
if (runtimeCondition === false) continue;
|
786
767
|
if (runtimeCondition === true) continue outer;
|
787
|
-
|
788
|
-
currentRuntimeCondition
|
789
|
-
currentRuntimeCondition,
|
790
|
-
runtimeCondition
|
791
|
-
);
|
792
|
-
} else {
|
793
|
-
currentRuntimeCondition = runtimeCondition;
|
794
|
-
}
|
768
|
+
currentRuntimeCondition =
|
769
|
+
currentRuntimeCondition !== false
|
770
|
+
? mergeRuntime(currentRuntimeCondition, runtimeCondition)
|
771
|
+
: runtimeCondition;
|
795
772
|
}
|
796
773
|
if (currentRuntimeCondition !== false) {
|
797
774
|
otherRuntimeConnections.push({
|
@@ -805,8 +782,8 @@ class ModuleConcatenationPlugin {
|
|
805
782
|
* @param {RequestShortener} requestShortener request shortener
|
806
783
|
* @returns {string} problem description
|
807
784
|
*/
|
808
|
-
const problem = requestShortener =>
|
809
|
-
|
785
|
+
const problem = requestShortener =>
|
786
|
+
`Module ${module.readableIdentifier(
|
810
787
|
requestShortener
|
811
788
|
)} is runtime-dependent referenced by these modules: ${Array.from(
|
812
789
|
otherRuntimeConnections,
|
@@ -819,7 +796,6 @@ class ModuleConcatenationPlugin {
|
|
819
796
|
/** @type {RuntimeSpec} */ (runtimeCondition)
|
820
797
|
)})`
|
821
798
|
).join(", ")}`;
|
822
|
-
};
|
823
799
|
statistics.incorrectRuntimeCondition++;
|
824
800
|
failureCache.set(module, problem); // cache failures for performance
|
825
801
|
return problem;
|
@@ -61,9 +61,7 @@ const mapAndDeduplicateBuffers = (input, fn) => {
|
|
61
61
|
* @param {string} str String to quote
|
62
62
|
* @returns {string} Escaped string
|
63
63
|
*/
|
64
|
-
const quoteMeta = str => {
|
65
|
-
return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
66
|
-
};
|
64
|
+
const quoteMeta = str => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
67
65
|
|
68
66
|
const cachedSourceMap = new WeakMap();
|
69
67
|
|
@@ -215,7 +213,7 @@ class RealContentHashPlugin {
|
|
215
213
|
[asset.referencedHashes, asset.ownHashes] =
|
216
214
|
await cacheAnalyse.providePromise(name, etag, () => {
|
217
215
|
const referencedHashes = new Set();
|
218
|
-
|
216
|
+
const ownHashes = new Set();
|
219
217
|
const inContent = content.match(hashRegExp);
|
220
218
|
if (inContent) {
|
221
219
|
for (const hash of inContent) {
|
@@ -256,7 +254,7 @@ ${referencingAssets
|
|
256
254
|
})
|
257
255
|
.join("\n")}`);
|
258
256
|
compilation.errors.push(err);
|
259
|
-
return
|
257
|
+
return;
|
260
258
|
}
|
261
259
|
const hashes = new Set();
|
262
260
|
for (const { referencedHashes, ownHashes } of assets) {
|
@@ -369,7 +367,7 @@ ${referencingAssets
|
|
369
367
|
(asset.referencedHashes)
|
370
368
|
).some(hash => hashToNewHash.get(hash) !== hash)
|
371
369
|
) {
|
372
|
-
const identifier = asset.name
|
370
|
+
const identifier = `${asset.name}|without-own`;
|
373
371
|
const etag = getEtag(asset);
|
374
372
|
asset.newSourceWithoutOwn = await cacheGenerate.providePromise(
|
375
373
|
identifier,
|
@@ -410,11 +408,10 @@ ${referencingAssets
|
|
410
408
|
return asset.newSourceWithoutOwn
|
411
409
|
? asset.newSourceWithoutOwn.buffer()
|
412
410
|
: asset.source.buffer();
|
413
|
-
} else {
|
414
|
-
return asset.newSource
|
415
|
-
? asset.newSource.buffer()
|
416
|
-
: asset.source.buffer();
|
417
411
|
}
|
412
|
+
return asset.newSource
|
413
|
+
? asset.newSource.buffer()
|
414
|
+
: asset.source.buffer();
|
418
415
|
});
|
419
416
|
let newHash = hooks.updateHash.call(assetsContent, oldHash);
|
420
417
|
if (!newHash) {
|
@@ -41,7 +41,7 @@ function* getModulesFromMask(mask, ordinalModules) {
|
|
41
41
|
// Consider the last 32 bits, since that's what Math.clz32 can handle
|
42
42
|
let last32 = Number(BigInt.asUintN(32, mask));
|
43
43
|
while (last32 > 0) {
|
44
|
-
|
44
|
+
const last = Math.clz32(last32);
|
45
45
|
// The number of trailing zeros is the number trimmed off the input mask + 31 - the number of leading zeros
|
46
46
|
// The 32 is baked into the initial value of offset
|
47
47
|
const moduleIndex = offset - last;
|
@@ -148,7 +148,7 @@ class RemoveParentModulesPlugin {
|
|
148
148
|
availableModulesMask = parentMask;
|
149
149
|
changed = true;
|
150
150
|
} else {
|
151
|
-
|
151
|
+
const newMask = availableModulesMask & parentMask;
|
152
152
|
if (newMask !== availableModulesMask) {
|
153
153
|
changed = true;
|
154
154
|
availableModulesMask = newMask;
|
@@ -177,7 +177,7 @@ class RemoveParentModulesPlugin {
|
|
177
177
|
chunk.groupsIterable,
|
178
178
|
chunkGroup => availableModulesMap.get(chunkGroup)
|
179
179
|
);
|
180
|
-
if (availableModulesSets.
|
180
|
+
if (availableModulesSets.includes(undefined)) continue; // No info about this chunk group
|
181
181
|
|
182
182
|
const availableModulesMask = intersectMasks(availableModulesSets);
|
183
183
|
const toRemoveMask = chunkMask & availableModulesMask;
|
@@ -23,6 +23,7 @@ const formatLocation = require("../formatLocation");
|
|
23
23
|
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
24
24
|
/** @typedef {import("../Module")} Module */
|
25
25
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
26
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
26
27
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
27
28
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
28
29
|
|
@@ -57,7 +58,7 @@ const globToRegexp = (glob, cache) => {
|
|
57
58
|
}
|
58
59
|
const baseRegexp = glob2regexp(glob, { globstar: true, extended: true });
|
59
60
|
const regexpSource = baseRegexp.source;
|
60
|
-
const regexp = new RegExp(
|
61
|
+
const regexp = new RegExp(`^(\\./)?${regexpSource.slice(1)}`);
|
61
62
|
cache.set(glob, regexp);
|
62
63
|
return regexp;
|
63
64
|
};
|
@@ -71,6 +72,7 @@ class SideEffectsFlagPlugin {
|
|
71
72
|
constructor(analyseSource = true) {
|
72
73
|
this._analyseSource = analyseSource;
|
73
74
|
}
|
75
|
+
|
74
76
|
/**
|
75
77
|
* Apply the plugin
|
76
78
|
* @param {Compiler} compiler the compiler instance
|
@@ -321,7 +323,9 @@ class SideEffectsFlagPlugin {
|
|
321
323
|
? [...exportName, ...ids.slice(1)]
|
322
324
|
: ids.slice(1)
|
323
325
|
);
|
324
|
-
return
|
326
|
+
return /** @type {ModuleGraphConnection} */ (
|
327
|
+
moduleGraph.getConnection(dep)
|
328
|
+
);
|
325
329
|
}
|
326
330
|
);
|
327
331
|
continue;
|
@@ -28,11 +28,10 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
28
28
|
/** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
|
29
29
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
30
30
|
/** @typedef {import("../ChunkGroup")} ChunkGroup */
|
31
|
-
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
32
|
-
/** @typedef {import("../Compilation").PathData} PathData */
|
33
31
|
/** @typedef {import("../Compiler")} Compiler */
|
34
32
|
/** @typedef {import("../Module")} Module */
|
35
33
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
34
|
+
/** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
|
36
35
|
/** @typedef {import("../util/deterministicGrouping").GroupedItems<Module>} DeterministicGroupingGroupedItemsForModule */
|
37
36
|
/** @typedef {import("../util/deterministicGrouping").Options<Module>} DeterministicGroupingOptionsForModule */
|
38
37
|
|
@@ -67,7 +66,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
67
66
|
* @property {number=} minChunks
|
68
67
|
* @property {number=} maxAsyncRequests
|
69
68
|
* @property {number=} maxInitialRequests
|
70
|
-
* @property {
|
69
|
+
* @property {TemplatePath=} filename
|
71
70
|
* @property {string=} idHint
|
72
71
|
* @property {string=} automaticNameDelimiter
|
73
72
|
* @property {boolean=} reuseExistingChunk
|
@@ -89,7 +88,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
89
88
|
* @property {number=} minChunks
|
90
89
|
* @property {number=} maxAsyncRequests
|
91
90
|
* @property {number=} maxInitialRequests
|
92
|
-
* @property {
|
91
|
+
* @property {TemplatePath=} filename
|
93
92
|
* @property {string=} idHint
|
94
93
|
* @property {string} automaticNameDelimiter
|
95
94
|
* @property {boolean} reuseExistingChunk
|
@@ -144,7 +143,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
144
143
|
* @property {number} maxAsyncRequests
|
145
144
|
* @property {number} maxInitialRequests
|
146
145
|
* @property {boolean} hidePathInfo
|
147
|
-
* @property {
|
146
|
+
* @property {TemplatePath} filename
|
148
147
|
* @property {string} automaticNameDelimiter
|
149
148
|
* @property {GetCacheGroups} getCacheGroups
|
150
149
|
* @property {GetName} getName
|
@@ -167,9 +166,8 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
|
|
167
166
|
const defaultGetName = /** @type {GetName} */ (() => {});
|
168
167
|
|
169
168
|
const deterministicGroupingForModules =
|
170
|
-
/** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
|
171
|
-
|
172
|
-
);
|
169
|
+
/** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
|
170
|
+
(deterministicGrouping);
|
173
171
|
|
174
172
|
/** @type {WeakMap<Module, string>} */
|
175
173
|
const getKeyCache = new WeakMap();
|
@@ -180,11 +178,13 @@ const getKeyCache = new WeakMap();
|
|
180
178
|
* @returns {string} hashed filename
|
181
179
|
*/
|
182
180
|
const hashFilename = (name, outputOptions) => {
|
183
|
-
const digest =
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
181
|
+
const digest =
|
182
|
+
/** @type {string} */
|
183
|
+
(
|
184
|
+
createHash(outputOptions.hashFunction)
|
185
|
+
.update(name)
|
186
|
+
.digest(outputOptions.hashDigest)
|
187
|
+
);
|
188
188
|
return digest.slice(0, 8);
|
189
189
|
};
|
190
190
|
|
@@ -200,10 +200,21 @@ const getRequests = chunk => {
|
|
200
200
|
return requests;
|
201
201
|
};
|
202
202
|
|
203
|
+
/**
|
204
|
+
* @template {object} T
|
205
|
+
* @template {object} R
|
206
|
+
* @param {T} obj obj an object
|
207
|
+
* @param {function(T[keyof T], keyof T): T[keyof T]} fn fn
|
208
|
+
* @returns {T} result
|
209
|
+
*/
|
203
210
|
const mapObject = (obj, fn) => {
|
204
211
|
const newObj = Object.create(null);
|
205
212
|
for (const key of Object.keys(obj)) {
|
206
|
-
newObj[key] = fn(
|
213
|
+
newObj[key] = fn(
|
214
|
+
obj[/** @type {keyof T} */ (key)],
|
215
|
+
/** @type {keyof T} */
|
216
|
+
(key)
|
217
|
+
);
|
207
218
|
}
|
208
219
|
return newObj;
|
209
220
|
};
|
@@ -283,13 +294,12 @@ const normalizeSizes = (value, defaultSizeTypes) => {
|
|
283
294
|
return o;
|
284
295
|
} else if (typeof value === "object" && value !== null) {
|
285
296
|
return { ...value };
|
286
|
-
} else {
|
287
|
-
return {};
|
288
297
|
}
|
298
|
+
return {};
|
289
299
|
};
|
290
300
|
|
291
301
|
/**
|
292
|
-
* @param {...SplitChunksSizes} sizes the sizes
|
302
|
+
* @param {...(SplitChunksSizes | undefined)} sizes the sizes
|
293
303
|
* @returns {SplitChunksSizes} the merged sizes
|
294
304
|
*/
|
295
305
|
const mergeSizes = (...sizes) => {
|
@@ -324,11 +334,7 @@ const combineSizes = (a, b, combine) => {
|
|
324
334
|
/** @type {SplitChunksSizes} */
|
325
335
|
const result = {};
|
326
336
|
for (const key of aKeys) {
|
327
|
-
|
328
|
-
result[key] = combine(a[key], b[key]);
|
329
|
-
} else {
|
330
|
-
result[key] = a[key];
|
331
|
-
}
|
337
|
+
result[key] = bKeys.has(key) ? combine(a[key], b[key]) : a[key];
|
332
338
|
}
|
333
339
|
for (const key of bKeys) {
|
334
340
|
if (!aKeys.has(key)) {
|
@@ -425,9 +431,7 @@ const normalizeChunksFilter = chunks => {
|
|
425
431
|
return ALL_CHUNK_FILTER;
|
426
432
|
}
|
427
433
|
if (chunks instanceof RegExp) {
|
428
|
-
return chunk =>
|
429
|
-
return chunk.name ? chunks.test(chunk.name) : false;
|
430
|
-
};
|
434
|
+
return chunk => (chunk.name ? chunks.test(chunk.name) : false);
|
431
435
|
}
|
432
436
|
if (typeof chunks === "function") {
|
433
437
|
return chunks;
|
@@ -500,7 +504,7 @@ const normalizeCacheGroups = (cacheGroups, defaultSizeTypes) => {
|
|
500
504
|
*/
|
501
505
|
const fn = (module, context) => {
|
502
506
|
/** @type {CacheGroupSource[]} */
|
503
|
-
|
507
|
+
const results = [];
|
504
508
|
for (const fn of handlers) {
|
505
509
|
fn(module, context, results);
|
506
510
|
}
|
@@ -1210,7 +1214,7 @@ module.exports = class SplitChunksPlugin {
|
|
1210
1214
|
// Walk through all modules
|
1211
1215
|
for (const module of compilation.modules) {
|
1212
1216
|
// Get cache group
|
1213
|
-
|
1217
|
+
const cacheGroups = this.options.getCacheGroups(module, context);
|
1214
1218
|
if (!Array.isArray(cacheGroups) || cacheGroups.length === 0) {
|
1215
1219
|
continue;
|
1216
1220
|
}
|
@@ -1437,7 +1441,7 @@ module.exports = class SplitChunksPlugin {
|
|
1437
1441
|
: item.cacheGroup.maxAsyncRequests
|
1438
1442
|
);
|
1439
1443
|
if (
|
1440
|
-
isFinite(maxRequests) &&
|
1444
|
+
Number.isFinite(maxRequests) &&
|
1441
1445
|
getRequests(chunk) >= maxRequests
|
1442
1446
|
) {
|
1443
1447
|
usedChunks.delete(chunk);
|
@@ -1482,7 +1486,7 @@ module.exports = class SplitChunksPlugin {
|
|
1482
1486
|
usedChunks.size === 1
|
1483
1487
|
) {
|
1484
1488
|
const [chunk] = usedChunks;
|
1485
|
-
|
1489
|
+
const chunkSizes = Object.create(null);
|
1486
1490
|
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
1487
1491
|
if (!item.modules.has(module)) {
|
1488
1492
|
for (const type of module.getSourceTypes()) {
|
@@ -1522,7 +1526,7 @@ module.exports = class SplitChunksPlugin {
|
|
1522
1526
|
|
1523
1527
|
// Add a note to the chunk
|
1524
1528
|
newChunk.chunkReason =
|
1525
|
-
(newChunk.chunkReason ? newChunk.chunkReason
|
1529
|
+
(newChunk.chunkReason ? `${newChunk.chunkReason}, ` : "") +
|
1526
1530
|
(isReusedWithAllModules
|
1527
1531
|
? "reused as split chunk"
|
1528
1532
|
: "split chunk");
|
@@ -127,8 +127,8 @@ module.exports = class SizeLimitsPlugin {
|
|
127
127
|
|
128
128
|
if (size > /** @type {number} */ (entrypointSizeLimit)) {
|
129
129
|
entrypointsOverLimit.push({
|
130
|
-
name
|
131
|
-
size
|
130
|
+
name,
|
131
|
+
size,
|
132
132
|
files: entry.getFiles().filter(fileFilter)
|
133
133
|
});
|
134
134
|
isOverSizeLimitSet.add(entry);
|
@@ -16,7 +16,7 @@ class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
|
|
16
16
|
* @param {Record<string|number, (string|number)[]>} chunkMap map from chunk to
|
17
17
|
*/
|
18
18
|
constructor(chunkMap) {
|
19
|
-
super(
|
19
|
+
super("chunk prefetch trigger", RuntimeModule.STAGE_TRIGGER);
|
20
20
|
this.chunkMap = chunkMap;
|
21
21
|
}
|
22
22
|
|
@@ -16,7 +16,7 @@ class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
|
|
16
16
|
* @param {Record<string|number, (string|number)[]>} chunkMap map from chunk to chunks
|
17
17
|
*/
|
18
18
|
constructor(chunkMap) {
|
19
|
-
super(
|
19
|
+
super("chunk preload trigger", RuntimeModule.STAGE_TRIGGER);
|
20
20
|
this.chunkMap = chunkMap;
|
21
21
|
}
|
22
22
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
|
8
9
|
/** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
|
9
10
|
|
10
11
|
class BasicEffectRulePlugin {
|
@@ -28,7 +29,8 @@ class BasicEffectRulePlugin {
|
|
28
29
|
if (unhandledProperties.has(this.ruleProperty)) {
|
29
30
|
unhandledProperties.delete(this.ruleProperty);
|
30
31
|
|
31
|
-
const value =
|
32
|
+
const value =
|
33
|
+
rule[/** @type {keyof RuleSetRule} */ (this.ruleProperty)];
|
32
34
|
|
33
35
|
result.effects.push({
|
34
36
|
type: this.effectType,
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
|
8
9
|
/** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
|
9
10
|
/** @typedef {import("./RuleSetCompiler").RuleCondition} RuleCondition */
|
10
11
|
|
@@ -30,7 +31,8 @@ class BasicMatcherRulePlugin {
|
|
30
31
|
(path, rule, unhandledProperties, result) => {
|
31
32
|
if (unhandledProperties.has(this.ruleProperty)) {
|
32
33
|
unhandledProperties.delete(this.ruleProperty);
|
33
|
-
const value =
|
34
|
+
const value =
|
35
|
+
rule[/** @type {keyof RuleSetRule} */ (this.ruleProperty)];
|
34
36
|
const condition = ruleSetCompiler.compileCondition(
|
35
37
|
`${path}.${this.ruleProperty}`,
|
36
38
|
value
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
|
8
9
|
/** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
|
9
10
|
/** @typedef {import("./RuleSetCompiler").RuleCondition} RuleCondition */
|
10
11
|
/** @typedef {import("./RuleSetCompiler").RuleConditionFunction} RuleConditionFunction */
|
@@ -32,7 +33,9 @@ class ObjectMatcherRulePlugin {
|
|
32
33
|
(path, rule, unhandledProperties, result) => {
|
33
34
|
if (unhandledProperties.has(ruleProperty)) {
|
34
35
|
unhandledProperties.delete(ruleProperty);
|
35
|
-
const value =
|
36
|
+
const value =
|
37
|
+
/** @type {Record<string, any>} */
|
38
|
+
(rule[/** @type {keyof RuleSetRule} */ (ruleProperty)]);
|
36
39
|
for (const property of Object.keys(value)) {
|
37
40
|
const nestedDataProperties = property.split(".");
|
38
41
|
const condition = ruleSetCompiler.compileCondition(
|