webpack 5.76.1 → 5.88.2
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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
@@ -16,7 +16,7 @@ const { UsageState } = require("../ExportsInfo");
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
17
17
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
18
|
|
19
|
-
/** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true>} InnerGraph */
|
19
|
+
/** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true | undefined>} InnerGraph */
|
20
20
|
/** @typedef {function(boolean | Set<string> | undefined): void} UsageCallback */
|
21
21
|
|
22
22
|
/**
|
@@ -34,7 +34,7 @@ const topLevelSymbolTag = Symbol("top level symbol");
|
|
34
34
|
|
35
35
|
/**
|
36
36
|
* @param {ParserState} parserState parser state
|
37
|
-
* @returns {State} state
|
37
|
+
* @returns {State | undefined} state
|
38
38
|
*/
|
39
39
|
function getState(parserState) {
|
40
40
|
return parserStateMap.get(parserState);
|
@@ -235,7 +235,7 @@ exports.onUsage = (state, onUsageCallback) => {
|
|
235
235
|
|
236
236
|
/**
|
237
237
|
* @param {ParserState} state parser state
|
238
|
-
* @param {TopLevelSymbol} symbol the symbol
|
238
|
+
* @param {TopLevelSymbol | undefined} symbol the symbol
|
239
239
|
*/
|
240
240
|
exports.setTopLevelSymbol = (state, symbol) => {
|
241
241
|
const innerGraphState = getState(state);
|
@@ -260,7 +260,7 @@ exports.getTopLevelSymbol = state => {
|
|
260
260
|
/**
|
261
261
|
* @param {JavascriptParser} parser parser
|
262
262
|
* @param {string} name name of variable
|
263
|
-
* @returns {TopLevelSymbol} symbol
|
263
|
+
* @returns {TopLevelSymbol | undefined} symbol
|
264
264
|
*/
|
265
265
|
exports.tagTopLevelSymbol = (parser, name) => {
|
266
266
|
const innerGraphState = getState(parser.state);
|
@@ -309,7 +309,7 @@ exports.isDependencyUsedByExports = (
|
|
309
309
|
|
310
310
|
/**
|
311
311
|
* @param {Dependency} dependency the dependency
|
312
|
-
* @param {Set<string> | boolean} usedByExports usedByExports info
|
312
|
+
* @param {Set<string> | boolean | undefined} usedByExports usedByExports info
|
313
313
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
314
314
|
* @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
|
315
315
|
*/
|
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
11
|
+
} = require("../ModuleTypeConstants");
|
8
12
|
const PureExpressionDependency = require("../dependencies/PureExpressionDependency");
|
9
13
|
const InnerGraph = require("./InnerGraph");
|
10
14
|
|
@@ -12,6 +16,7 @@ const InnerGraph = require("./InnerGraph");
|
|
12
16
|
/** @typedef {import("estree").ClassExpression} ClassExpressionNode */
|
13
17
|
/** @typedef {import("estree").Node} Node */
|
14
18
|
/** @typedef {import("estree").VariableDeclarator} VariableDeclaratorNode */
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
15
20
|
/** @typedef {import("../Compiler")} Compiler */
|
16
21
|
/** @typedef {import("../Dependency")} Dependency */
|
17
22
|
/** @typedef {import("../dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
|
@@ -21,6 +26,8 @@ const InnerGraph = require("./InnerGraph");
|
|
21
26
|
|
22
27
|
const { topLevelSymbolTag } = InnerGraph;
|
23
28
|
|
29
|
+
const PLUGIN_NAME = "InnerGraphPlugin";
|
30
|
+
|
24
31
|
class InnerGraphPlugin {
|
25
32
|
/**
|
26
33
|
* Apply the plugin
|
@@ -29,7 +36,7 @@ class InnerGraphPlugin {
|
|
29
36
|
*/
|
30
37
|
apply(compiler) {
|
31
38
|
compiler.hooks.compilation.tap(
|
32
|
-
|
39
|
+
PLUGIN_NAME,
|
33
40
|
(compilation, { normalModuleFactory }) => {
|
34
41
|
const logger = compilation.getLogger("webpack.InnerGraphPlugin");
|
35
42
|
|
@@ -40,7 +47,7 @@ class InnerGraphPlugin {
|
|
40
47
|
|
41
48
|
/**
|
42
49
|
* @param {JavascriptParser} parser the parser
|
43
|
-
* @param {
|
50
|
+
* @param {JavascriptParserOptions} parserOptions options
|
44
51
|
* @returns {void}
|
45
52
|
*/
|
46
53
|
const handler = (parser, parserOptions) => {
|
@@ -61,11 +68,11 @@ class InnerGraphPlugin {
|
|
61
68
|
});
|
62
69
|
};
|
63
70
|
|
64
|
-
parser.hooks.program.tap(
|
71
|
+
parser.hooks.program.tap(PLUGIN_NAME, () => {
|
65
72
|
InnerGraph.enable(parser.state);
|
66
73
|
});
|
67
74
|
|
68
|
-
parser.hooks.finish.tap(
|
75
|
+
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|
69
76
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
70
77
|
|
71
78
|
logger.time("infer dependency usage");
|
@@ -97,7 +104,7 @@ class InnerGraphPlugin {
|
|
97
104
|
|
98
105
|
// The following hooks are used during prewalking:
|
99
106
|
|
100
|
-
parser.hooks.preStatement.tap(
|
107
|
+
parser.hooks.preStatement.tap(PLUGIN_NAME, statement => {
|
101
108
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
102
109
|
|
103
110
|
if (parser.scope.topLevelScope === true) {
|
@@ -110,11 +117,14 @@ class InnerGraphPlugin {
|
|
110
117
|
}
|
111
118
|
});
|
112
119
|
|
113
|
-
parser.hooks.blockPreStatement.tap(
|
120
|
+
parser.hooks.blockPreStatement.tap(PLUGIN_NAME, statement => {
|
114
121
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
115
122
|
|
116
123
|
if (parser.scope.topLevelScope === true) {
|
117
|
-
if (
|
124
|
+
if (
|
125
|
+
statement.type === "ClassDeclaration" &&
|
126
|
+
parser.isPure(statement, statement.range[0])
|
127
|
+
) {
|
118
128
|
const name = statement.id ? statement.id.name : "*default*";
|
119
129
|
const fn = InnerGraph.tagTopLevelSymbol(parser, name);
|
120
130
|
classWithTopLevelSymbol.set(statement, fn);
|
@@ -125,8 +135,9 @@ class InnerGraphPlugin {
|
|
125
135
|
const fn = InnerGraph.tagTopLevelSymbol(parser, name);
|
126
136
|
const decl = statement.declaration;
|
127
137
|
if (
|
128
|
-
decl.type === "ClassExpression" ||
|
129
|
-
|
138
|
+
(decl.type === "ClassExpression" ||
|
139
|
+
decl.type === "ClassDeclaration") &&
|
140
|
+
parser.isPure(decl, decl.range[0])
|
130
141
|
) {
|
131
142
|
classWithTopLevelSymbol.set(decl, fn);
|
132
143
|
} else if (parser.isPure(decl, statement.range[0])) {
|
@@ -143,33 +154,33 @@ class InnerGraphPlugin {
|
|
143
154
|
}
|
144
155
|
});
|
145
156
|
|
146
|
-
parser.hooks.preDeclarator.tap(
|
147
|
-
|
148
|
-
(
|
149
|
-
|
157
|
+
parser.hooks.preDeclarator.tap(PLUGIN_NAME, (decl, statement) => {
|
158
|
+
if (!InnerGraph.isEnabled(parser.state)) return;
|
159
|
+
if (
|
160
|
+
parser.scope.topLevelScope === true &&
|
161
|
+
decl.init &&
|
162
|
+
decl.id.type === "Identifier"
|
163
|
+
) {
|
164
|
+
const name = decl.id.name;
|
150
165
|
if (
|
151
|
-
|
152
|
-
decl.init
|
153
|
-
decl.id.type === "Identifier"
|
166
|
+
decl.init.type === "ClassExpression" &&
|
167
|
+
parser.isPure(decl.init, decl.id.range[1])
|
154
168
|
) {
|
155
|
-
const
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
) {
|
166
|
-
pureDeclarators.add(decl);
|
167
|
-
}
|
168
|
-
return true;
|
169
|
+
const fn = InnerGraph.tagTopLevelSymbol(parser, name);
|
170
|
+
classWithTopLevelSymbol.set(decl.init, fn);
|
171
|
+
} else if (parser.isPure(decl.init, decl.id.range[1])) {
|
172
|
+
const fn = InnerGraph.tagTopLevelSymbol(parser, name);
|
173
|
+
declWithTopLevelSymbol.set(decl, fn);
|
174
|
+
if (
|
175
|
+
!decl.init.type.endsWith("FunctionExpression") &&
|
176
|
+
decl.init.type !== "Literal"
|
177
|
+
) {
|
178
|
+
pureDeclarators.add(decl);
|
169
179
|
}
|
180
|
+
return true;
|
170
181
|
}
|
171
182
|
}
|
172
|
-
);
|
183
|
+
});
|
173
184
|
|
174
185
|
// During real walking we set the TopLevelSymbol state to the assigned
|
175
186
|
// TopLevelSymbol by using the fill datastructures.
|
@@ -187,7 +198,7 @@ class InnerGraphPlugin {
|
|
187
198
|
|
188
199
|
// The following hooks are called during walking:
|
189
200
|
|
190
|
-
parser.hooks.statement.tap(
|
201
|
+
parser.hooks.statement.tap(PLUGIN_NAME, statement => {
|
191
202
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
192
203
|
if (parser.scope.topLevelScope === true) {
|
193
204
|
InnerGraph.setTopLevelSymbol(parser.state, undefined);
|
@@ -219,7 +230,7 @@ class InnerGraphPlugin {
|
|
219
230
|
});
|
220
231
|
|
221
232
|
parser.hooks.classExtendsExpression.tap(
|
222
|
-
|
233
|
+
PLUGIN_NAME,
|
223
234
|
(expr, statement) => {
|
224
235
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
225
236
|
if (parser.scope.topLevelScope === true) {
|
@@ -239,7 +250,7 @@ class InnerGraphPlugin {
|
|
239
250
|
);
|
240
251
|
|
241
252
|
parser.hooks.classBodyElement.tap(
|
242
|
-
|
253
|
+
PLUGIN_NAME,
|
243
254
|
(element, classDefinition) => {
|
244
255
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
245
256
|
if (parser.scope.topLevelScope === true) {
|
@@ -252,7 +263,7 @@ class InnerGraphPlugin {
|
|
252
263
|
);
|
253
264
|
|
254
265
|
parser.hooks.classBodyValue.tap(
|
255
|
-
|
266
|
+
PLUGIN_NAME,
|
256
267
|
(expression, element, classDefinition) => {
|
257
268
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
258
269
|
if (parser.scope.topLevelScope === true) {
|
@@ -292,7 +303,7 @@ class InnerGraphPlugin {
|
|
292
303
|
}
|
293
304
|
);
|
294
305
|
|
295
|
-
parser.hooks.declarator.tap(
|
306
|
+
parser.hooks.declarator.tap(PLUGIN_NAME, (decl, statement) => {
|
296
307
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
297
308
|
const fn = declWithTopLevelSymbol.get(decl);
|
298
309
|
|
@@ -330,7 +341,7 @@ class InnerGraphPlugin {
|
|
330
341
|
|
331
342
|
parser.hooks.expression
|
332
343
|
.for(topLevelSymbolTag)
|
333
|
-
.tap(
|
344
|
+
.tap(PLUGIN_NAME, () => {
|
334
345
|
const topLevelSymbol = /** @type {TopLevelSymbol} */ (
|
335
346
|
parser.currentTagData
|
336
347
|
);
|
@@ -343,21 +354,19 @@ class InnerGraphPlugin {
|
|
343
354
|
currentTopLevelSymbol || true
|
344
355
|
);
|
345
356
|
});
|
346
|
-
parser.hooks.assign
|
347
|
-
.
|
348
|
-
.
|
349
|
-
|
350
|
-
if (expr.operator === "=") return true;
|
351
|
-
});
|
357
|
+
parser.hooks.assign.for(topLevelSymbolTag).tap(PLUGIN_NAME, expr => {
|
358
|
+
if (!InnerGraph.isEnabled(parser.state)) return;
|
359
|
+
if (expr.operator === "=") return true;
|
360
|
+
});
|
352
361
|
};
|
353
362
|
normalModuleFactory.hooks.parser
|
354
|
-
.for(
|
355
|
-
.tap(
|
363
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
364
|
+
.tap(PLUGIN_NAME, handler);
|
356
365
|
normalModuleFactory.hooks.parser
|
357
|
-
.for(
|
358
|
-
.tap(
|
366
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
367
|
+
.tap(PLUGIN_NAME, handler);
|
359
368
|
|
360
|
-
compilation.hooks.finishModules.tap(
|
369
|
+
compilation.hooks.finishModules.tap(PLUGIN_NAME, () => {
|
361
370
|
logger.timeAggregateEnd("infer dependency usage");
|
362
371
|
});
|
363
372
|
}
|
@@ -36,6 +36,12 @@ const validate = createSchemaValidation(
|
|
36
36
|
* @property {number} bSize
|
37
37
|
*/
|
38
38
|
|
39
|
+
/**
|
40
|
+
* @template K, V
|
41
|
+
* @param {Map<K, Set<V>>} map map
|
42
|
+
* @param {K} key key
|
43
|
+
* @param {V} value value
|
44
|
+
*/
|
39
45
|
const addToSetMap = (map, key, value) => {
|
40
46
|
const set = map.get(key);
|
41
47
|
if (set === undefined) {
|
@@ -68,7 +74,9 @@ class LimitChunkCountPlugin {
|
|
68
74
|
},
|
69
75
|
chunks => {
|
70
76
|
const chunkGraph = compilation.chunkGraph;
|
71
|
-
const maxChunks =
|
77
|
+
const maxChunks =
|
78
|
+
/** @type {LimitChunkCountPluginOptions} */
|
79
|
+
(options).maxChunks;
|
72
80
|
if (!maxChunks) return;
|
73
81
|
if (maxChunks < 1) return;
|
74
82
|
if (compilation.chunks.size <= maxChunks) return;
|
@@ -88,9 +96,17 @@ class LimitChunkCountPlugin {
|
|
88
96
|
c => c.sizeDiff,
|
89
97
|
(a, b) => b - a,
|
90
98
|
// Layer 2: ordered by smallest combined size
|
99
|
+
/**
|
100
|
+
* @param {ChunkCombination} c combination
|
101
|
+
* @returns {number} integrated size
|
102
|
+
*/
|
91
103
|
c => c.integratedSize,
|
92
104
|
(a, b) => a - b,
|
93
105
|
// Layer 3: ordered by position difference in orderedChunk (-> to be deterministic)
|
106
|
+
/**
|
107
|
+
* @param {ChunkCombination} c combination
|
108
|
+
* @returns {number} position difference
|
109
|
+
*/
|
94
110
|
c => c.bIdx - c.aIdx,
|
95
111
|
(a, b) => a - b,
|
96
112
|
// Layer 4: ordered by position in orderedChunk (-> to be deterministic)
|
@@ -193,14 +209,18 @@ class LimitChunkCountPlugin {
|
|
193
209
|
// Update all affected combinations
|
194
210
|
// delete all combination with the removed chunk
|
195
211
|
// we will use combinations with the kept chunk instead
|
196
|
-
for (const combination of
|
212
|
+
for (const combination of /** @type {Set<ChunkCombination>} */ (
|
213
|
+
combinationsByChunk.get(a)
|
214
|
+
)) {
|
197
215
|
if (combination.deleted) continue;
|
198
216
|
combination.deleted = true;
|
199
217
|
combinations.delete(combination);
|
200
218
|
}
|
201
219
|
|
202
220
|
// Update combinations with the kept chunk with new sizes
|
203
|
-
for (const combination of
|
221
|
+
for (const combination of /** @type {Set<ChunkCombination>} */ (
|
222
|
+
combinationsByChunk.get(b)
|
223
|
+
)) {
|
204
224
|
if (combination.deleted) continue;
|
205
225
|
if (combination.a === b) {
|
206
226
|
if (!chunkGraph.canChunksBeIntegrated(a, combination.b)) {
|
@@ -243,7 +263,12 @@ class LimitChunkCountPlugin {
|
|
243
263
|
finishUpdate();
|
244
264
|
}
|
245
265
|
}
|
246
|
-
combinationsByChunk.set(
|
266
|
+
combinationsByChunk.set(
|
267
|
+
a,
|
268
|
+
/** @type {Set<ChunkCombination>} */ (
|
269
|
+
combinationsByChunk.get(b)
|
270
|
+
)
|
271
|
+
);
|
247
272
|
combinationsByChunk.delete(b);
|
248
273
|
}
|
249
274
|
}
|
@@ -39,7 +39,7 @@ const comparator = compareSelect(e => e.name, compareStringsNumeric);
|
|
39
39
|
/**
|
40
40
|
* @param {boolean} deterministic use deterministic names
|
41
41
|
* @param {ExportsInfo} exportsInfo exports info
|
42
|
-
* @param {boolean} isNamespace is namespace object
|
42
|
+
* @param {boolean | undefined} isNamespace is namespace object
|
43
43
|
* @returns {void}
|
44
44
|
*/
|
45
45
|
const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
|
@@ -9,6 +9,11 @@ const SizeFormatHelpers = require("../SizeFormatHelpers");
|
|
9
9
|
const WebpackError = require("../WebpackError");
|
10
10
|
|
11
11
|
class MinMaxSizeWarning extends WebpackError {
|
12
|
+
/**
|
13
|
+
* @param {string[] | undefined} keys keys
|
14
|
+
* @param {number} minSize minimum size
|
15
|
+
* @param {number} maxSize maximum size
|
16
|
+
*/
|
12
17
|
constructor(keys, minSize, maxSize) {
|
13
18
|
let keysMessage = "Fallback cache group";
|
14
19
|
if (keys) {
|
@@ -40,6 +40,10 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
40
40
|
* @property {number} added
|
41
41
|
*/
|
42
42
|
|
43
|
+
/**
|
44
|
+
* @param {string} msg message
|
45
|
+
* @returns {string} formatted message
|
46
|
+
*/
|
43
47
|
const formatBailoutReason = msg => {
|
44
48
|
return "ModuleConcatenation bailout: " + msg;
|
45
49
|
};
|
@@ -64,8 +68,13 @@ class ModuleConcatenationPlugin {
|
|
64
68
|
);
|
65
69
|
}
|
66
70
|
const moduleGraph = compilation.moduleGraph;
|
71
|
+
/** @type {Map<Module, string | ((requestShortener: RequestShortener) => string)>} */
|
67
72
|
const bailoutReasonMap = new Map();
|
68
73
|
|
74
|
+
/**
|
75
|
+
* @param {Module} module the module
|
76
|
+
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
77
|
+
*/
|
69
78
|
const setBailoutReason = (module, reason) => {
|
70
79
|
setInnerBailoutReason(module, reason);
|
71
80
|
moduleGraph
|
@@ -77,16 +86,30 @@ class ModuleConcatenationPlugin {
|
|
77
86
|
);
|
78
87
|
};
|
79
88
|
|
89
|
+
/**
|
90
|
+
* @param {Module} module the module
|
91
|
+
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
92
|
+
*/
|
80
93
|
const setInnerBailoutReason = (module, reason) => {
|
81
94
|
bailoutReasonMap.set(module, reason);
|
82
95
|
};
|
83
96
|
|
97
|
+
/**
|
98
|
+
* @param {Module} module the module
|
99
|
+
* @param {RequestShortener} requestShortener the request shortener
|
100
|
+
* @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
|
101
|
+
*/
|
84
102
|
const getInnerBailoutReason = (module, requestShortener) => {
|
85
103
|
const reason = bailoutReasonMap.get(module);
|
86
104
|
if (typeof reason === "function") return reason(requestShortener);
|
87
105
|
return reason;
|
88
106
|
};
|
89
107
|
|
108
|
+
/**
|
109
|
+
* @param {Module} module the module
|
110
|
+
* @param {Module | function(RequestShortener): string} problem the problem
|
111
|
+
* @returns {(requestShortener: RequestShortener) => string} the reason
|
112
|
+
*/
|
90
113
|
const formatBailoutWarning = (module, problem) => requestShortener => {
|
91
114
|
if (typeof problem === "function") {
|
92
115
|
return formatBailoutReason(
|
@@ -460,7 +483,7 @@ class ModuleConcatenationPlugin {
|
|
460
483
|
c.module === rootModule ? c.originModule : c.module;
|
461
484
|
const innerConnection =
|
462
485
|
c.dependency instanceof HarmonyImportDependency &&
|
463
|
-
modules.has(otherModule);
|
486
|
+
modules.has(/** @type {Module} */ (otherModule));
|
464
487
|
return !innerConnection;
|
465
488
|
});
|
466
489
|
// add concatenated module to the compilation
|
@@ -533,7 +556,7 @@ class ModuleConcatenationPlugin {
|
|
533
556
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
534
557
|
* @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
|
535
558
|
* @param {Statistics} statistics gathering metrics
|
536
|
-
* @returns {Module | function(RequestShortener): string} the problematic module
|
559
|
+
* @returns {null | Module | function(RequestShortener): string} the problematic module
|
537
560
|
*/
|
538
561
|
_tryToAdd(
|
539
562
|
compilation,
|
@@ -572,6 +595,10 @@ class ModuleConcatenationPlugin {
|
|
572
595
|
chunkGraph.getModuleChunksIterable(config.rootModule)
|
573
596
|
).filter(chunk => !chunkGraph.isModuleInChunk(module, chunk));
|
574
597
|
if (missingChunks.length > 0) {
|
598
|
+
/**
|
599
|
+
* @param {RequestShortener} requestShortener request shortener
|
600
|
+
* @returns {string} problem description
|
601
|
+
*/
|
575
602
|
const problem = requestShortener => {
|
576
603
|
const missingChunksList = Array.from(
|
577
604
|
new Set(missingChunks.map(chunk => chunk.name || "unnamed chunk(s)"))
|
@@ -609,6 +636,10 @@ class ModuleConcatenationPlugin {
|
|
609
636
|
return connection.isActive(runtime);
|
610
637
|
});
|
611
638
|
if (activeNonModulesConnections.length > 0) {
|
639
|
+
/**
|
640
|
+
* @param {RequestShortener} requestShortener request shortener
|
641
|
+
* @returns {string} problem description
|
642
|
+
*/
|
612
643
|
const problem = requestShortener => {
|
613
644
|
const importingExplanations = new Set(
|
614
645
|
activeNonModulesConnections.map(c => c.explanation).filter(Boolean)
|
@@ -666,6 +697,10 @@ class ModuleConcatenationPlugin {
|
|
666
697
|
return false;
|
667
698
|
});
|
668
699
|
if (otherChunkModules.length > 0) {
|
700
|
+
/**
|
701
|
+
* @param {RequestShortener} requestShortener request shortener
|
702
|
+
* @returns {string} problem description
|
703
|
+
*/
|
669
704
|
const problem = requestShortener => {
|
670
705
|
const names = otherChunkModules
|
671
706
|
.map(m => m.readableIdentifier(requestShortener))
|
@@ -693,6 +728,10 @@ class ModuleConcatenationPlugin {
|
|
693
728
|
nonHarmonyConnections.set(originModule, connections);
|
694
729
|
}
|
695
730
|
if (nonHarmonyConnections.size > 0) {
|
731
|
+
/**
|
732
|
+
* @param {RequestShortener} requestShortener request shortener
|
733
|
+
* @returns {string} problem description
|
734
|
+
*/
|
696
735
|
const problem = requestShortener => {
|
697
736
|
const names = Array.from(nonHarmonyConnections)
|
698
737
|
.map(([originModule, connections]) => {
|
@@ -753,6 +792,10 @@ class ModuleConcatenationPlugin {
|
|
753
792
|
}
|
754
793
|
}
|
755
794
|
if (otherRuntimeConnections.length > 0) {
|
795
|
+
/**
|
796
|
+
* @param {RequestShortener} requestShortener request shortener
|
797
|
+
* @returns {string} problem description
|
798
|
+
*/
|
756
799
|
const problem = requestShortener => {
|
757
800
|
return `Module ${module.readableIdentifier(
|
758
801
|
requestShortener
|
@@ -831,10 +874,17 @@ class ConcatConfiguration {
|
|
831
874
|
this.warnings = new Map();
|
832
875
|
}
|
833
876
|
|
877
|
+
/**
|
878
|
+
* @param {Module} module the module
|
879
|
+
*/
|
834
880
|
add(module) {
|
835
881
|
this.modules.add(module);
|
836
882
|
}
|
837
883
|
|
884
|
+
/**
|
885
|
+
* @param {Module} module the module
|
886
|
+
* @returns {boolean} true, when the module is in the module set
|
887
|
+
*/
|
838
888
|
has(module) {
|
839
889
|
return this.modules.has(module);
|
840
890
|
}
|
@@ -843,10 +893,17 @@ class ConcatConfiguration {
|
|
843
893
|
return this.modules.size === 1;
|
844
894
|
}
|
845
895
|
|
896
|
+
/**
|
897
|
+
* @param {Module} module the module
|
898
|
+
* @param {Module | function(RequestShortener): string} problem the problem
|
899
|
+
*/
|
846
900
|
addWarning(module, problem) {
|
847
901
|
this.warnings.set(module, problem);
|
848
902
|
}
|
849
903
|
|
904
|
+
/**
|
905
|
+
* @returns {Map<Module, Module | function(RequestShortener): string>} warnings
|
906
|
+
*/
|
850
907
|
getWarningsSorted() {
|
851
908
|
return new Map(
|
852
909
|
Array.from(this.warnings).sort((a, b) => {
|