webpack 5.92.1 → 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 +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- 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 +132 -70
- 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/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -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 +39 -40
- package/lib/css/CssGenerator.js +11 -14
- 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 +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- 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 +41 -16
- 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 +11 -12
- 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 +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- 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 +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- 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 +144 -61
- 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 +56 -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/ChunkPrefetchPreloadPlugin.js +1 -0
- 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/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- 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 +10 -13
- 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 +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- 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 +682 -347
@@ -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");
|
@@ -398,10 +381,12 @@ class ModuleConcatenationPlugin {
|
|
398
381
|
}
|
399
382
|
|
400
383
|
// Create a new ConcatenatedModule
|
401
|
-
|
384
|
+
ConcatenatedModule.getCompilationHooks(compilation);
|
385
|
+
const newModule = ConcatenatedModule.create(
|
402
386
|
rootModule,
|
403
387
|
modules,
|
404
388
|
concatConfiguration.runtime,
|
389
|
+
compilation,
|
405
390
|
compiler.root,
|
406
391
|
compilation.outputOptions.hashFunction
|
407
392
|
);
|
@@ -446,15 +431,12 @@ class ModuleConcatenationPlugin {
|
|
446
431
|
moduleGraph.copyOutgoingModuleConnections(
|
447
432
|
m,
|
448
433
|
newModule,
|
449
|
-
c =>
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
)
|
456
|
-
);
|
457
|
-
}
|
434
|
+
c =>
|
435
|
+
c.originModule === m &&
|
436
|
+
!(
|
437
|
+
c.dependency instanceof HarmonyImportDependency &&
|
438
|
+
modules.has(c.module)
|
439
|
+
)
|
458
440
|
);
|
459
441
|
// remove module from chunk
|
460
442
|
for (const chunk of chunkGraph.getModuleChunksIterable(
|
@@ -637,11 +619,11 @@ class ModuleConcatenationPlugin {
|
|
637
619
|
incomingConnections.get(null) || incomingConnections.get(undefined);
|
638
620
|
if (incomingConnectionsFromNonModules) {
|
639
621
|
const activeNonModulesConnections =
|
640
|
-
incomingConnectionsFromNonModules.filter(connection =>
|
622
|
+
incomingConnectionsFromNonModules.filter(connection =>
|
641
623
|
// We are not interested in inactive connections
|
642
624
|
// or connections without dependency
|
643
|
-
|
644
|
-
|
625
|
+
connection.isActive(runtime)
|
626
|
+
);
|
645
627
|
if (activeNonModulesConnections.length > 0) {
|
646
628
|
/**
|
647
629
|
* @param {RequestShortener} requestShortener request shortener
|
@@ -674,7 +656,7 @@ class ModuleConcatenationPlugin {
|
|
674
656
|
if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
|
675
657
|
|
676
658
|
// We don't care for connections from other runtimes
|
677
|
-
let originRuntime
|
659
|
+
let originRuntime;
|
678
660
|
for (const r of chunkGraph.getModuleRuntimes(originModule)) {
|
679
661
|
originRuntime = mergeRuntimeOwned(originRuntime, r);
|
680
662
|
}
|
@@ -741,19 +723,20 @@ class ModuleConcatenationPlugin {
|
|
741
723
|
*/
|
742
724
|
const problem = requestShortener => {
|
743
725
|
const names = Array.from(nonHarmonyConnections)
|
744
|
-
.map(
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
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
|
+
)
|
752
736
|
)
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
})
|
737
|
+
.sort()
|
738
|
+
.join(", ")})`
|
739
|
+
)
|
757
740
|
.sort();
|
758
741
|
return `Module ${module.readableIdentifier(
|
759
742
|
requestShortener
|
@@ -777,19 +760,15 @@ class ModuleConcatenationPlugin {
|
|
777
760
|
/** @type {false | RuntimeSpec} */
|
778
761
|
let currentRuntimeCondition = false;
|
779
762
|
for (const connection of connections) {
|
780
|
-
const runtimeCondition = filterRuntime(runtime, runtime =>
|
781
|
-
|
782
|
-
|
763
|
+
const runtimeCondition = filterRuntime(runtime, runtime =>
|
764
|
+
connection.isTargetActive(runtime)
|
765
|
+
);
|
783
766
|
if (runtimeCondition === false) continue;
|
784
767
|
if (runtimeCondition === true) continue outer;
|
785
|
-
|
786
|
-
currentRuntimeCondition
|
787
|
-
currentRuntimeCondition,
|
788
|
-
runtimeCondition
|
789
|
-
);
|
790
|
-
} else {
|
791
|
-
currentRuntimeCondition = runtimeCondition;
|
792
|
-
}
|
768
|
+
currentRuntimeCondition =
|
769
|
+
currentRuntimeCondition !== false
|
770
|
+
? mergeRuntime(currentRuntimeCondition, runtimeCondition)
|
771
|
+
: runtimeCondition;
|
793
772
|
}
|
794
773
|
if (currentRuntimeCondition !== false) {
|
795
774
|
otherRuntimeConnections.push({
|
@@ -803,8 +782,8 @@ class ModuleConcatenationPlugin {
|
|
803
782
|
* @param {RequestShortener} requestShortener request shortener
|
804
783
|
* @returns {string} problem description
|
805
784
|
*/
|
806
|
-
const problem = requestShortener =>
|
807
|
-
|
785
|
+
const problem = requestShortener =>
|
786
|
+
`Module ${module.readableIdentifier(
|
808
787
|
requestShortener
|
809
788
|
)} is runtime-dependent referenced by these modules: ${Array.from(
|
810
789
|
otherRuntimeConnections,
|
@@ -817,7 +796,6 @@ class ModuleConcatenationPlugin {
|
|
817
796
|
/** @type {RuntimeSpec} */ (runtimeCondition)
|
818
797
|
)})`
|
819
798
|
).join(", ")}`;
|
820
|
-
};
|
821
799
|
statistics.incorrectRuntimeCondition++;
|
822
800
|
failureCache.set(module, problem); // cache failures for performance
|
823
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);
|
@@ -35,6 +35,7 @@ class ChunkPrefetchPreloadPlugin {
|
|
35
35
|
if (startupChildChunks) {
|
36
36
|
set.add(RuntimeGlobals.prefetchChunk);
|
37
37
|
set.add(RuntimeGlobals.onChunksLoaded);
|
38
|
+
set.add(RuntimeGlobals.exports);
|
38
39
|
compilation.addRuntimeModule(
|
39
40
|
chunk,
|
40
41
|
new ChunkPrefetchStartupRuntimeModule(startupChildChunks)
|
@@ -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(
|