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
@@ -30,7 +30,7 @@ class FlagAllModulesAsUsedPlugin {
|
|
30
30
|
const moduleGraph = compilation.moduleGraph;
|
31
31
|
compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, modules => {
|
32
32
|
/** @type {RuntimeSpec} */
|
33
|
-
let runtime
|
33
|
+
let runtime;
|
34
34
|
for (const [name, { options }] of compilation.entries) {
|
35
35
|
runtime = mergeRuntimeOwned(
|
36
36
|
runtime,
|
@@ -54,14 +54,15 @@ class FlagDependencyExportsPlugin {
|
|
54
54
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
55
55
|
// If the module doesn't have an exportsType, it's a module
|
56
56
|
// without declared exports.
|
57
|
-
if (
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
if (
|
58
|
+
(!module.buildMeta || !module.buildMeta.exportsType) &&
|
59
|
+
exportsInfo.otherExportsInfo.provided !== null
|
60
|
+
) {
|
61
|
+
// It's a module without declared exports
|
62
|
+
statNoExports++;
|
63
|
+
exportsInfo.setHasProvideInfo();
|
64
|
+
exportsInfo.setUnknownExportsProvided();
|
65
|
+
return callback();
|
65
66
|
}
|
66
67
|
// If the module has no hash, it's uncacheable
|
67
68
|
if (
|
@@ -189,9 +190,9 @@ class FlagDependencyExportsPlugin {
|
|
189
190
|
let name;
|
190
191
|
let canMangle = globalCanMangle;
|
191
192
|
let terminalBinding = globalTerminalBinding;
|
192
|
-
let exports
|
193
|
+
let exports;
|
193
194
|
let from = globalFrom;
|
194
|
-
let fromExport
|
195
|
+
let fromExport;
|
195
196
|
let priority = globalPriority;
|
196
197
|
let hidden = false;
|
197
198
|
if (typeof exportNameOrSpec === "string") {
|
@@ -261,7 +262,7 @@ class FlagDependencyExportsPlugin {
|
|
261
262
|
|
262
263
|
// Recalculate target exportsInfo
|
263
264
|
const target = exportInfo.getTarget(moduleGraph);
|
264
|
-
let targetExportsInfo
|
265
|
+
let targetExportsInfo;
|
265
266
|
if (target) {
|
266
267
|
const targetModuleExportsInfo =
|
267
268
|
moduleGraph.getExportsInfo(target.module);
|
package/lib/Generator.js
CHANGED
@@ -42,9 +42,6 @@
|
|
42
42
|
* @property {RuntimeTemplate=} runtimeTemplate
|
43
43
|
*/
|
44
44
|
|
45
|
-
/**
|
46
|
-
*
|
47
|
-
*/
|
48
45
|
class Generator {
|
49
46
|
/**
|
50
47
|
* @param {Record<string, Generator>} map map of types
|
@@ -133,8 +130,8 @@ class ByTypeGenerator extends Generator {
|
|
133
130
|
* @param {string=} type source type
|
134
131
|
* @returns {number} estimate size of the module
|
135
132
|
*/
|
136
|
-
getSize(module, type) {
|
137
|
-
const t = type
|
133
|
+
getSize(module, type = "javascript") {
|
134
|
+
const t = type;
|
138
135
|
const generator = this.map[t];
|
139
136
|
return generator ? generator.getSize(module, t) : 0;
|
140
137
|
}
|
package/lib/GraphHelpers.js
CHANGED
@@ -33,5 +33,6 @@ const connectChunkGroupParentAndChild = (parent, child) => {
|
|
33
33
|
}
|
34
34
|
};
|
35
35
|
|
36
|
-
exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
|
37
|
-
exports.connectChunkGroupParentAndChild =
|
36
|
+
module.exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
|
37
|
+
module.exports.connectChunkGroupParentAndChild =
|
38
|
+
connectChunkGroupParentAndChild;
|
package/lib/HookWebpackError.js
CHANGED
@@ -55,18 +55,16 @@ module.exports.makeWebpackError = makeWebpackError;
|
|
55
55
|
* @param {string} hook name of hook
|
56
56
|
* @returns {Callback<T>} generic callback
|
57
57
|
*/
|
58
|
-
const makeWebpackErrorCallback = (callback, hook) => {
|
59
|
-
|
60
|
-
if (err) {
|
61
|
-
|
62
|
-
callback(err);
|
63
|
-
return;
|
64
|
-
}
|
65
|
-
callback(new HookWebpackError(err, hook));
|
58
|
+
const makeWebpackErrorCallback = (callback, hook) => (err, result) => {
|
59
|
+
if (err) {
|
60
|
+
if (err instanceof WebpackError) {
|
61
|
+
callback(err);
|
66
62
|
return;
|
67
63
|
}
|
68
|
-
callback(
|
69
|
-
|
64
|
+
callback(new HookWebpackError(err, hook));
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
callback(null, result);
|
70
68
|
};
|
71
69
|
|
72
70
|
module.exports.makeWebpackErrorCallback = makeWebpackErrorCallback;
|
@@ -44,8 +44,10 @@ const {
|
|
44
44
|
|
45
45
|
/** @typedef {import("estree").CallExpression} CallExpression */
|
46
46
|
/** @typedef {import("estree").Expression} Expression */
|
47
|
+
/** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
|
47
48
|
/** @typedef {import("./Chunk")} Chunk */
|
48
49
|
/** @typedef {import("./Chunk").ChunkId} ChunkId */
|
50
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
49
51
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
50
52
|
/** @typedef {import("./Compiler")} Compiler */
|
51
53
|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
@@ -62,7 +64,8 @@ const {
|
|
62
64
|
* @property {SyncBailHook<[TODO, string[]], void>} hotAcceptWithoutCallback
|
63
65
|
*/
|
64
66
|
|
65
|
-
/** @typedef {
|
67
|
+
/** @typedef {{ updatedChunkIds: Set<ChunkId>, removedChunkIds: Set<ChunkId>, removedModules: Set<Module>, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
|
68
|
+
/** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
|
66
69
|
|
67
70
|
/** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
|
68
71
|
const parserHooksMap = new WeakMap();
|
@@ -131,7 +134,9 @@ class HotModuleReplacementPlugin {
|
|
131
134
|
(module.buildInfo).moduleConcatenationBailout =
|
132
135
|
"Hot Module Replacement";
|
133
136
|
if (expr.arguments.length >= 1) {
|
134
|
-
const arg = parser.evaluateExpression(
|
137
|
+
const arg = parser.evaluateExpression(
|
138
|
+
/** @type {Expression} */ (expr.arguments[0])
|
139
|
+
);
|
135
140
|
/** @type {BasicEvaluatedExpression[]} */
|
136
141
|
let params = [];
|
137
142
|
if (arg.isString()) {
|
@@ -142,9 +147,9 @@ class HotModuleReplacementPlugin {
|
|
142
147
|
(arg.items).filter(param => param.isString());
|
143
148
|
}
|
144
149
|
/** @type {string[]} */
|
145
|
-
|
150
|
+
const requests = [];
|
146
151
|
if (params.length > 0) {
|
147
|
-
params.
|
152
|
+
for (const [idx, param] of params.entries()) {
|
148
153
|
const request = /** @type {string} */ (param.string);
|
149
154
|
const dep = new ParamDependency(
|
150
155
|
request,
|
@@ -157,17 +162,16 @@ class HotModuleReplacementPlugin {
|
|
157
162
|
dep.loc.index = idx;
|
158
163
|
module.addDependency(dep);
|
159
164
|
requests.push(request);
|
160
|
-
}
|
165
|
+
}
|
161
166
|
if (expr.arguments.length > 1) {
|
162
167
|
hotAcceptCallback.call(expr.arguments[1], requests);
|
163
168
|
for (let i = 1; i < expr.arguments.length; i++) {
|
164
169
|
parser.walkExpression(expr.arguments[i]);
|
165
170
|
}
|
166
171
|
return true;
|
167
|
-
} else {
|
168
|
-
hotAcceptWithoutCallback.call(expr, requests);
|
169
|
-
return true;
|
170
172
|
}
|
173
|
+
hotAcceptWithoutCallback.call(expr, requests);
|
174
|
+
return true;
|
171
175
|
}
|
172
176
|
}
|
173
177
|
parser.walkExpressions(expr.arguments);
|
@@ -202,7 +206,7 @@ class HotModuleReplacementPlugin {
|
|
202
206
|
/** @type {BasicEvaluatedExpression[]} */
|
203
207
|
(arg.items).filter(param => param.isString());
|
204
208
|
}
|
205
|
-
params.
|
209
|
+
for (const [idx, param] of params.entries()) {
|
206
210
|
const dep = new ParamDependency(
|
207
211
|
/** @type {string} */ (param.string),
|
208
212
|
/** @type {Range} */ (param.range)
|
@@ -211,7 +215,7 @@ class HotModuleReplacementPlugin {
|
|
211
215
|
dep.loc = Object.create(/** @type {DependencyLocation} */ (expr.loc));
|
212
216
|
dep.loc.index = idx;
|
213
217
|
module.addDependency(dep);
|
214
|
-
}
|
218
|
+
}
|
215
219
|
}
|
216
220
|
return true;
|
217
221
|
};
|
@@ -244,14 +248,13 @@ class HotModuleReplacementPlugin {
|
|
244
248
|
name: PLUGIN_NAME,
|
245
249
|
before: "NodeStuffPlugin"
|
246
250
|
},
|
247
|
-
expr =>
|
248
|
-
|
251
|
+
expr =>
|
252
|
+
evaluateToIdentifier(
|
249
253
|
"module.hot",
|
250
254
|
"module",
|
251
255
|
() => ["hot"],
|
252
256
|
true
|
253
|
-
)(expr)
|
254
|
-
}
|
257
|
+
)(expr)
|
255
258
|
);
|
256
259
|
parser.hooks.call
|
257
260
|
.for("module.hot.accept")
|
@@ -277,14 +280,14 @@ class HotModuleReplacementPlugin {
|
|
277
280
|
const applyImportMetaHot = parser => {
|
278
281
|
parser.hooks.evaluateIdentifier
|
279
282
|
.for("import.meta.webpackHot")
|
280
|
-
.tap(PLUGIN_NAME, expr =>
|
281
|
-
|
283
|
+
.tap(PLUGIN_NAME, expr =>
|
284
|
+
evaluateToIdentifier(
|
282
285
|
"import.meta.webpackHot",
|
283
286
|
"import.meta",
|
284
287
|
() => ["webpackHot"],
|
285
288
|
true
|
286
|
-
)(expr)
|
287
|
-
|
289
|
+
)(expr)
|
290
|
+
);
|
288
291
|
parser.hooks.call
|
289
292
|
.for("import.meta.webpackHot.accept")
|
290
293
|
.tap(
|
@@ -309,7 +312,7 @@ class HotModuleReplacementPlugin {
|
|
309
312
|
// It should not affect child compilations
|
310
313
|
if (compilation.compiler !== compiler) return;
|
311
314
|
|
312
|
-
|
315
|
+
// #region module.hot.* API
|
313
316
|
compilation.dependencyFactories.set(
|
314
317
|
ModuleHotAcceptDependency,
|
315
318
|
normalModuleFactory
|
@@ -326,9 +329,9 @@ class HotModuleReplacementPlugin {
|
|
326
329
|
ModuleHotDeclineDependency,
|
327
330
|
new ModuleHotDeclineDependency.Template()
|
328
331
|
);
|
329
|
-
|
332
|
+
// #endregion
|
330
333
|
|
331
|
-
|
334
|
+
// #region import.meta.webpackHot.* API
|
332
335
|
compilation.dependencyFactories.set(
|
333
336
|
ImportMetaHotAcceptDependency,
|
334
337
|
normalModuleFactory
|
@@ -345,7 +348,7 @@ class HotModuleReplacementPlugin {
|
|
345
348
|
ImportMetaHotDeclineDependency,
|
346
349
|
new ImportMetaHotDeclineDependency.Template()
|
347
350
|
);
|
348
|
-
|
351
|
+
// #endregion
|
349
352
|
|
350
353
|
let hotIndex = 0;
|
351
354
|
/** @type {Record<string, string>} */
|
@@ -401,10 +404,9 @@ class HotModuleReplacementPlugin {
|
|
401
404
|
module,
|
402
405
|
chunk.runtime
|
403
406
|
);
|
404
|
-
} else {
|
405
|
-
nonCodeGeneratedModules.add(module, chunk.runtime);
|
406
|
-
return chunkGraph.getModuleHash(module, chunk.runtime);
|
407
407
|
}
|
408
|
+
nonCodeGeneratedModules.add(module, chunk.runtime);
|
409
|
+
return chunkGraph.getModuleHash(module, chunk.runtime);
|
408
410
|
};
|
409
411
|
const fullHashModulesInThisChunk =
|
410
412
|
chunkGraph.getChunkFullHashModulesSet(chunk);
|
@@ -446,28 +448,26 @@ class HotModuleReplacementPlugin {
|
|
446
448
|
chunkModuleHashes[key] = hash;
|
447
449
|
}
|
448
450
|
}
|
449
|
-
} else {
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
} else {
|
461
|
-
chunkModuleHashes[key] = hash;
|
462
|
-
}
|
463
|
-
}
|
464
|
-
} else {
|
465
|
-
for (const module of modules) {
|
466
|
-
const key = `${chunk.id}|${module.identifier()}`;
|
467
|
-
const hash = getModuleHash(module);
|
451
|
+
} else if (fullHashModulesInThisChunk !== undefined) {
|
452
|
+
for (const module of modules) {
|
453
|
+
const key = `${chunk.id}|${module.identifier()}`;
|
454
|
+
const hash = getModuleHash(module);
|
455
|
+
if (
|
456
|
+
fullHashModulesInThisChunk.has(
|
457
|
+
/** @type {RuntimeModule} */ (module)
|
458
|
+
)
|
459
|
+
) {
|
460
|
+
fullHashChunkModuleHashes[key] = hash;
|
461
|
+
} else {
|
468
462
|
chunkModuleHashes[key] = hash;
|
469
463
|
}
|
470
464
|
}
|
465
|
+
} else {
|
466
|
+
for (const module of modules) {
|
467
|
+
const key = `${chunk.id}|${module.identifier()}`;
|
468
|
+
const hash = getModuleHash(module);
|
469
|
+
chunkModuleHashes[key] = hash;
|
470
|
+
}
|
471
471
|
}
|
472
472
|
}
|
473
473
|
}
|
@@ -517,7 +517,8 @@ class HotModuleReplacementPlugin {
|
|
517
517
|
forEachRuntime(allOldRuntime, runtime => {
|
518
518
|
const { path: filename, info: assetInfo } =
|
519
519
|
compilation.getPathWithInfo(
|
520
|
-
|
520
|
+
/** @type {NonNullable<OutputNormalized["hotUpdateMainFilename"]>} */
|
521
|
+
(compilation.outputOptions.hotUpdateMainFilename),
|
521
522
|
{
|
522
523
|
hash: records.hash,
|
523
524
|
runtime
|
@@ -540,7 +541,9 @@ class HotModuleReplacementPlugin {
|
|
540
541
|
/** @type {Map<number|string, Module>} */
|
541
542
|
const allModules = new Map();
|
542
543
|
for (const module of compilation.modules) {
|
543
|
-
const id =
|
544
|
+
const id =
|
545
|
+
/** @type {ModuleId} */
|
546
|
+
(chunkGraph.getModuleId(module));
|
544
547
|
allModules.set(id, module);
|
545
548
|
}
|
546
549
|
|
@@ -604,16 +607,20 @@ class HotModuleReplacementPlugin {
|
|
604
607
|
removedFromRuntime = subtractRuntime(oldRuntime, newRuntime);
|
605
608
|
} else {
|
606
609
|
// chunk has completely removed
|
607
|
-
chunkId = `${
|
610
|
+
chunkId = `${Number(key)}` === key ? Number(key) : key;
|
608
611
|
removedFromRuntime = oldRuntime;
|
609
612
|
newRuntime = oldRuntime;
|
610
613
|
}
|
611
614
|
if (removedFromRuntime) {
|
612
615
|
// chunk was removed from some runtimes
|
613
616
|
forEachRuntime(removedFromRuntime, runtime => {
|
614
|
-
const item =
|
615
|
-
/** @type {
|
616
|
-
|
617
|
+
const item =
|
618
|
+
/** @type {HotUpdateMainContentByRuntimeItem} */
|
619
|
+
(
|
620
|
+
hotUpdateMainContentByRuntime.get(
|
621
|
+
/** @type {string} */ (runtime)
|
622
|
+
)
|
623
|
+
);
|
617
624
|
item.removedChunkIds.add(/** @type {ChunkId} */ (chunkId));
|
618
625
|
});
|
619
626
|
// dispose modules from the chunk in these runtimes
|
@@ -654,16 +661,18 @@ class HotModuleReplacementPlugin {
|
|
654
661
|
for (const moduleRuntime of runtimes) {
|
655
662
|
if (typeof moduleRuntime === "string") {
|
656
663
|
if (moduleRuntime === runtime) return;
|
657
|
-
} else if (
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
}
|
664
|
+
} else if (
|
665
|
+
moduleRuntime !== undefined &&
|
666
|
+
moduleRuntime.has(/** @type {string} */ (runtime))
|
667
|
+
)
|
668
|
+
return;
|
663
669
|
}
|
664
|
-
const item =
|
665
|
-
/** @type {
|
666
|
-
|
670
|
+
const item =
|
671
|
+
/** @type {HotUpdateMainContentByRuntimeItem} */ (
|
672
|
+
hotUpdateMainContentByRuntime.get(
|
673
|
+
/** @type {string} */ (runtime)
|
674
|
+
)
|
675
|
+
);
|
667
676
|
item.removedModules.add(module);
|
668
677
|
});
|
669
678
|
}
|
@@ -738,9 +747,12 @@ class HotModuleReplacementPlugin {
|
|
738
747
|
}
|
739
748
|
}
|
740
749
|
forEachRuntime(newRuntime, runtime => {
|
741
|
-
const item =
|
742
|
-
/** @type {
|
743
|
-
|
750
|
+
const item =
|
751
|
+
/** @type {HotUpdateMainContentByRuntimeItem} */ (
|
752
|
+
hotUpdateMainContentByRuntime.get(
|
753
|
+
/** @type {string} */ (runtime)
|
754
|
+
)
|
755
|
+
);
|
744
756
|
item.updatedChunkIds.add(/** @type {ChunkId} */ (chunkId));
|
745
757
|
});
|
746
758
|
}
|
@@ -795,8 +807,10 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
|
|
795
807
|
removedModules.size === 0
|
796
808
|
? completelyRemovedModulesArray
|
797
809
|
: completelyRemovedModulesArray.concat(
|
798
|
-
Array.from(
|
799
|
-
|
810
|
+
Array.from(
|
811
|
+
removedModules,
|
812
|
+
m =>
|
813
|
+
/** @type {ModuleId} */ (chunkGraph.getModuleId(m))
|
800
814
|
)
|
801
815
|
)
|
802
816
|
};
|
@@ -30,9 +30,9 @@ class IgnoreErrorModuleFactory extends ModuleFactory {
|
|
30
30
|
* @returns {void}
|
31
31
|
*/
|
32
32
|
create(data, callback) {
|
33
|
-
this.normalModuleFactory.create(data, (err, result) =>
|
34
|
-
|
35
|
-
|
33
|
+
this.normalModuleFactory.create(data, (err, result) =>
|
34
|
+
callback(null, result)
|
35
|
+
);
|
36
36
|
}
|
37
37
|
}
|
38
38
|
|
package/lib/IgnorePlugin.js
CHANGED
@@ -36,9 +36,7 @@ class IgnorePlugin {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
/**
|
39
|
-
* Note that if "contextRegExp" is given, both the "resourceRegExp"
|
40
|
-
* and "contextRegExp" have to match.
|
41
|
-
*
|
39
|
+
* Note that if "contextRegExp" is given, both the "resourceRegExp" and "contextRegExp" have to match.
|
42
40
|
* @param {ResolveData} resolveData resolve data
|
43
41
|
* @returns {false|undefined} returns false when the request should be ignored, otherwise undefined
|
44
42
|
*/
|
@@ -15,6 +15,7 @@ class IgnoreWarningsPlugin {
|
|
15
15
|
constructor(ignoreWarnings) {
|
16
16
|
this._ignoreWarnings = ignoreWarnings;
|
17
17
|
}
|
18
|
+
|
18
19
|
/**
|
19
20
|
* Apply the plugin
|
20
21
|
* @param {Compiler} compiler the compiler instance
|
@@ -22,15 +23,11 @@ class IgnoreWarningsPlugin {
|
|
22
23
|
*/
|
23
24
|
apply(compiler) {
|
24
25
|
compiler.hooks.compilation.tap("IgnoreWarningsPlugin", compilation => {
|
25
|
-
compilation.hooks.processWarnings.tap(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
ignore(warning, compilation)
|
31
|
-
);
|
32
|
-
});
|
33
|
-
}
|
26
|
+
compilation.hooks.processWarnings.tap("IgnoreWarningsPlugin", warnings =>
|
27
|
+
warnings.filter(
|
28
|
+
warning =>
|
29
|
+
!this._ignoreWarnings.some(ignore => ignore(warning, compilation))
|
30
|
+
)
|
34
31
|
);
|
35
32
|
});
|
36
33
|
}
|
package/lib/InitFragment.js
CHANGED
@@ -116,7 +116,7 @@ class InitFragment {
|
|
116
116
|
continue;
|
117
117
|
}
|
118
118
|
}
|
119
|
-
keyedFragments.set(fragment.key || Symbol(), fragment);
|
119
|
+
keyedFragments.set(fragment.key || Symbol("fragment key"), fragment);
|
120
120
|
}
|
121
121
|
|
122
122
|
const concatSource = new ConcatSource();
|
@@ -137,9 +137,8 @@ class InitFragment {
|
|
137
137
|
concatSource.add(content);
|
138
138
|
}
|
139
139
|
return concatSource;
|
140
|
-
} else {
|
141
|
-
return source;
|
142
140
|
}
|
141
|
+
return source;
|
143
142
|
}
|
144
143
|
|
145
144
|
/**
|
package/lib/LibManifestPlugin.js
CHANGED
@@ -11,6 +11,7 @@ const { someInIterable } = require("./util/IterableHelpers");
|
|
11
11
|
const { compareModulesById } = require("./util/comparators");
|
12
12
|
const { dirname, mkdirp } = require("./util/fs");
|
13
13
|
|
14
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
14
15
|
/** @typedef {import("./Compiler")} Compiler */
|
15
16
|
/** @typedef {import("./Compiler").IntermediateFileSystem} IntermediateFileSystem */
|
16
17
|
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
@@ -55,7 +56,7 @@ class LibManifestPlugin {
|
|
55
56
|
const moduleGraph = compilation.moduleGraph;
|
56
57
|
// store used paths to detect issue and output an error. #18200
|
57
58
|
const usedPaths = new Set();
|
58
|
-
asyncLib.
|
59
|
+
asyncLib.each(
|
59
60
|
Array.from(compilation.chunks),
|
60
61
|
(chunk, callback) => {
|
61
62
|
if (!chunk.canBeInitial()) {
|
@@ -67,7 +68,7 @@ class LibManifestPlugin {
|
|
67
68
|
chunk
|
68
69
|
});
|
69
70
|
if (usedPaths.has(targetPath)) {
|
70
|
-
callback(new Error(
|
71
|
+
callback(new Error("each chunk must have a unique path"));
|
71
72
|
return;
|
72
73
|
}
|
73
74
|
usedPaths.add(targetPath);
|
@@ -102,7 +103,7 @@ class LibManifestPlugin {
|
|
102
103
|
const providedExports = exportsInfo.getProvidedExports();
|
103
104
|
/** @type {ManifestModuleData} */
|
104
105
|
const data = {
|
105
|
-
id: chunkGraph.getModuleId(module),
|
106
|
+
id: /** @type {ModuleId} */ (chunkGraph.getModuleId(module)),
|
106
107
|
buildMeta: /** @type {BuildMeta} */ (module.buildMeta),
|
107
108
|
exports: Array.isArray(providedExports)
|
108
109
|
? providedExports
|