webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -8,15 +8,16 @@
|
|
|
8
8
|
const asyncLib = require("neo-async");
|
|
9
9
|
const ChunkGraph = require("../ChunkGraph");
|
|
10
10
|
const ModuleGraph = require("../ModuleGraph");
|
|
11
|
+
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
11
12
|
const { STAGE_DEFAULT } = require("../OptimizationStages");
|
|
12
13
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
13
14
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
|
14
15
|
const {
|
|
16
|
+
filterRuntime,
|
|
15
17
|
intersectRuntime,
|
|
18
|
+
mergeRuntime,
|
|
16
19
|
mergeRuntimeOwned,
|
|
17
|
-
|
|
18
|
-
runtimeToString,
|
|
19
|
-
mergeRuntime
|
|
20
|
+
runtimeToString
|
|
20
21
|
} = require("../util/runtime");
|
|
21
22
|
const ConcatenatedModule = require("./ConcatenatedModule");
|
|
22
23
|
|
|
@@ -45,7 +46,9 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
45
46
|
* @param {string} msg message
|
|
46
47
|
* @returns {string} formatted message
|
|
47
48
|
*/
|
|
48
|
-
const formatBailoutReason = msg => `ModuleConcatenation bailout: ${msg}`;
|
|
49
|
+
const formatBailoutReason = (msg) => `ModuleConcatenation bailout: ${msg}`;
|
|
50
|
+
|
|
51
|
+
const PLUGIN_NAME = "ModuleConcatenationPlugin";
|
|
49
52
|
|
|
50
53
|
class ModuleConcatenationPlugin {
|
|
51
54
|
/**
|
|
@@ -55,7 +58,7 @@ class ModuleConcatenationPlugin {
|
|
|
55
58
|
*/
|
|
56
59
|
apply(compiler) {
|
|
57
60
|
const { _backCompat: backCompat } = compiler;
|
|
58
|
-
compiler.hooks.compilation.tap(
|
|
61
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
59
62
|
if (compilation.moduleMemCaches) {
|
|
60
63
|
throw new Error(
|
|
61
64
|
"optimization.concatenateModules can't be used with cacheUnaffected as module concatenation is a global effect"
|
|
@@ -75,7 +78,7 @@ class ModuleConcatenationPlugin {
|
|
|
75
78
|
.getOptimizationBailout(module)
|
|
76
79
|
.push(
|
|
77
80
|
typeof reason === "function"
|
|
78
|
-
? rs => formatBailoutReason(reason(rs))
|
|
81
|
+
? (rs) => formatBailoutReason(reason(rs))
|
|
79
82
|
: formatBailoutReason(reason)
|
|
80
83
|
);
|
|
81
84
|
};
|
|
@@ -101,10 +104,10 @@ class ModuleConcatenationPlugin {
|
|
|
101
104
|
|
|
102
105
|
/**
|
|
103
106
|
* @param {Module} module the module
|
|
104
|
-
* @param {Module |
|
|
107
|
+
* @param {Module | ((requestShortener: RequestShortener) => string)} problem the problem
|
|
105
108
|
* @returns {(requestShortener: RequestShortener) => string} the reason
|
|
106
109
|
*/
|
|
107
|
-
const formatBailoutWarning = (module, problem) => requestShortener => {
|
|
110
|
+
const formatBailoutWarning = (module, problem) => (requestShortener) => {
|
|
108
111
|
if (typeof problem === "function") {
|
|
109
112
|
return formatBailoutReason(
|
|
110
113
|
`Cannot concat with ${module.readableIdentifier(
|
|
@@ -132,7 +135,7 @@ class ModuleConcatenationPlugin {
|
|
|
132
135
|
|
|
133
136
|
compilation.hooks.optimizeChunkModules.tapAsync(
|
|
134
137
|
{
|
|
135
|
-
name:
|
|
138
|
+
name: PLUGIN_NAME,
|
|
136
139
|
stage: STAGE_DEFAULT
|
|
137
140
|
},
|
|
138
141
|
(allChunks, modules, callback) => {
|
|
@@ -146,6 +149,7 @@ class ModuleConcatenationPlugin {
|
|
|
146
149
|
chunkGraph,
|
|
147
150
|
moduleGraph
|
|
148
151
|
};
|
|
152
|
+
const deferEnabled = compilation.options.experiments.deferImport;
|
|
149
153
|
logger.time("select relevant modules");
|
|
150
154
|
for (const module of modules) {
|
|
151
155
|
let canBeRoot = true;
|
|
@@ -179,7 +183,7 @@ class ModuleConcatenationPlugin {
|
|
|
179
183
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
180
184
|
const relevantExports = exportsInfo.getRelevantExports(undefined);
|
|
181
185
|
const unknownReexports = relevantExports.filter(
|
|
182
|
-
exportInfo =>
|
|
186
|
+
(exportInfo) =>
|
|
183
187
|
exportInfo.isReexport() && !exportInfo.getTarget(moduleGraph)
|
|
184
188
|
);
|
|
185
189
|
if (unknownReexports.length > 0) {
|
|
@@ -187,7 +191,7 @@ class ModuleConcatenationPlugin {
|
|
|
187
191
|
module,
|
|
188
192
|
`Reexports in this module do not have a static target (${Array.from(
|
|
189
193
|
unknownReexports,
|
|
190
|
-
exportInfo =>
|
|
194
|
+
(exportInfo) =>
|
|
191
195
|
`${
|
|
192
196
|
exportInfo.name || "other exports"
|
|
193
197
|
}: ${exportInfo.getUsedInfo()}`
|
|
@@ -198,14 +202,14 @@ class ModuleConcatenationPlugin {
|
|
|
198
202
|
|
|
199
203
|
// Root modules must have a static list of exports
|
|
200
204
|
const unknownProvidedExports = relevantExports.filter(
|
|
201
|
-
exportInfo => exportInfo.provided !== true
|
|
205
|
+
(exportInfo) => exportInfo.provided !== true
|
|
202
206
|
);
|
|
203
207
|
if (unknownProvidedExports.length > 0) {
|
|
204
208
|
setBailoutReason(
|
|
205
209
|
module,
|
|
206
210
|
`List of module exports is dynamic (${Array.from(
|
|
207
211
|
unknownProvidedExports,
|
|
208
|
-
exportInfo =>
|
|
212
|
+
(exportInfo) =>
|
|
209
213
|
`${
|
|
210
214
|
exportInfo.name || "other exports"
|
|
211
215
|
}: ${exportInfo.getProvidedInfo()} and ${exportInfo.getUsedInfo()}`
|
|
@@ -220,6 +224,11 @@ class ModuleConcatenationPlugin {
|
|
|
220
224
|
canBeInner = false;
|
|
221
225
|
}
|
|
222
226
|
|
|
227
|
+
if (deferEnabled && moduleGraph.isDeferred(module)) {
|
|
228
|
+
setInnerBailoutReason(module, "Module is deferred");
|
|
229
|
+
canBeInner = false;
|
|
230
|
+
}
|
|
231
|
+
|
|
223
232
|
if (canBeRoot) relevantModules.push(module);
|
|
224
233
|
if (canBeInner) possibleInners.add(module);
|
|
225
234
|
}
|
|
@@ -269,7 +278,7 @@ class ModuleConcatenationPlugin {
|
|
|
269
278
|
chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
|
|
270
279
|
}
|
|
271
280
|
const exportsInfo = moduleGraph.getExportsInfo(currentRoot);
|
|
272
|
-
const filteredRuntime = filterRuntime(chunkRuntime, r =>
|
|
281
|
+
const filteredRuntime = filterRuntime(chunkRuntime, (r) =>
|
|
273
282
|
exportsInfo.isModuleUsed(r)
|
|
274
283
|
);
|
|
275
284
|
const activeRuntime =
|
|
@@ -381,7 +390,6 @@ class ModuleConcatenationPlugin {
|
|
|
381
390
|
}
|
|
382
391
|
|
|
383
392
|
// Create a new ConcatenatedModule
|
|
384
|
-
ConcatenatedModule.getCompilationHooks(compilation);
|
|
385
393
|
const newModule = ConcatenatedModule.create(
|
|
386
394
|
rootModule,
|
|
387
395
|
modules,
|
|
@@ -393,13 +401,13 @@ class ModuleConcatenationPlugin {
|
|
|
393
401
|
|
|
394
402
|
const build = () => {
|
|
395
403
|
newModule.build(
|
|
396
|
-
|
|
404
|
+
compilation.options,
|
|
397
405
|
compilation,
|
|
398
|
-
/** @type {
|
|
406
|
+
/** @type {EXPECTED_ANY} */
|
|
399
407
|
(null),
|
|
400
|
-
/** @type {
|
|
408
|
+
/** @type {EXPECTED_ANY} */
|
|
401
409
|
(null),
|
|
402
|
-
err => {
|
|
410
|
+
(err) => {
|
|
403
411
|
if (err) {
|
|
404
412
|
if (!err.module) {
|
|
405
413
|
err.module = newModule;
|
|
@@ -433,7 +441,7 @@ class ModuleConcatenationPlugin {
|
|
|
433
441
|
moduleGraph.copyOutgoingModuleConnections(
|
|
434
442
|
m,
|
|
435
443
|
newModule,
|
|
436
|
-
c =>
|
|
444
|
+
(c) =>
|
|
437
445
|
c.originModule === m &&
|
|
438
446
|
!(
|
|
439
447
|
c.dependency instanceof HarmonyImportDependency &&
|
|
@@ -452,7 +460,7 @@ class ModuleConcatenationPlugin {
|
|
|
452
460
|
chunkGraph.disconnectChunkAndModule(chunk, m);
|
|
453
461
|
} else {
|
|
454
462
|
const newSourceTypes = new Set(sourceTypes);
|
|
455
|
-
newSourceTypes.delete(
|
|
463
|
+
newSourceTypes.delete(JAVASCRIPT_TYPE);
|
|
456
464
|
chunkGraph.setChunkModuleSourceTypes(
|
|
457
465
|
chunk,
|
|
458
466
|
m,
|
|
@@ -469,14 +477,18 @@ class ModuleConcatenationPlugin {
|
|
|
469
477
|
// remove module from chunk
|
|
470
478
|
chunkGraph.replaceModule(rootModule, newModule);
|
|
471
479
|
// replace module references with the concatenated module
|
|
472
|
-
moduleGraph.moveModuleConnections(
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
+
moduleGraph.moveModuleConnections(
|
|
481
|
+
rootModule,
|
|
482
|
+
newModule,
|
|
483
|
+
(c) => {
|
|
484
|
+
const otherModule =
|
|
485
|
+
c.module === rootModule ? c.originModule : c.module;
|
|
486
|
+
const innerConnection =
|
|
487
|
+
c.dependency instanceof HarmonyImportDependency &&
|
|
488
|
+
modules.has(/** @type {Module} */ (otherModule));
|
|
489
|
+
return !innerConnection;
|
|
490
|
+
}
|
|
491
|
+
);
|
|
480
492
|
// add concatenated module to the compilation
|
|
481
493
|
compilation.modules.add(newModule);
|
|
482
494
|
|
|
@@ -485,7 +497,7 @@ class ModuleConcatenationPlugin {
|
|
|
485
497
|
|
|
486
498
|
build();
|
|
487
499
|
},
|
|
488
|
-
err => {
|
|
500
|
+
(err) => {
|
|
489
501
|
logger.timeEnd("create concatenated modules");
|
|
490
502
|
process.nextTick(callback.bind(null, err));
|
|
491
503
|
}
|
|
@@ -524,7 +536,7 @@ class ModuleConcatenationPlugin {
|
|
|
524
536
|
);
|
|
525
537
|
|
|
526
538
|
if (
|
|
527
|
-
importedNames.every(i =>
|
|
539
|
+
importedNames.every((i) =>
|
|
528
540
|
Array.isArray(i) ? i.length > 0 : i.name.length > 0
|
|
529
541
|
) ||
|
|
530
542
|
Array.isArray(moduleGraph.getProvidedExports(module))
|
|
@@ -543,11 +555,11 @@ class ModuleConcatenationPlugin {
|
|
|
543
555
|
* @param {RuntimeSpec} activeRuntime the runtime scope of the root module
|
|
544
556
|
* @param {Set<Module>} possibleModules modules that are candidates
|
|
545
557
|
* @param {Set<Module>} candidates list of potential candidates (will be added to)
|
|
546
|
-
* @param {Map<Module, Module |
|
|
558
|
+
* @param {Map<Module, Module | ((requestShortener: RequestShortener) => string)>} failureCache cache for problematic modules to be more performant
|
|
547
559
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
548
560
|
* @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
|
|
549
561
|
* @param {Statistics} statistics gathering metrics
|
|
550
|
-
* @returns {null | Module |
|
|
562
|
+
* @returns {null | Module | ((requestShortener: RequestShortener) => string)} the problematic module
|
|
551
563
|
*/
|
|
552
564
|
_tryToAdd(
|
|
553
565
|
compilation,
|
|
@@ -582,25 +594,27 @@ class ModuleConcatenationPlugin {
|
|
|
582
594
|
}
|
|
583
595
|
|
|
584
596
|
// Module must be in the correct chunks
|
|
585
|
-
const missingChunks =
|
|
586
|
-
chunkGraph.getModuleChunksIterable(config.rootModule)
|
|
587
|
-
|
|
597
|
+
const missingChunks = [
|
|
598
|
+
...chunkGraph.getModuleChunksIterable(config.rootModule)
|
|
599
|
+
].filter((chunk) => !chunkGraph.isModuleInChunk(module, chunk));
|
|
588
600
|
if (missingChunks.length > 0) {
|
|
589
601
|
/**
|
|
590
602
|
* @param {RequestShortener} requestShortener request shortener
|
|
591
603
|
* @returns {string} problem description
|
|
592
604
|
*/
|
|
593
|
-
const problem = requestShortener => {
|
|
594
|
-
const missingChunksList =
|
|
595
|
-
new Set(
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
605
|
+
const problem = (requestShortener) => {
|
|
606
|
+
const missingChunksList = [
|
|
607
|
+
...new Set(
|
|
608
|
+
missingChunks.map((chunk) => chunk.name || "unnamed chunk(s)")
|
|
609
|
+
)
|
|
610
|
+
].sort();
|
|
611
|
+
const chunks = [
|
|
612
|
+
...new Set(
|
|
613
|
+
[...chunkGraph.getModuleChunksIterable(module)].map(
|
|
614
|
+
(chunk) => chunk.name || "unnamed chunk(s)"
|
|
601
615
|
)
|
|
602
616
|
)
|
|
603
|
-
|
|
617
|
+
].sort();
|
|
604
618
|
return `Module ${module.readableIdentifier(
|
|
605
619
|
requestShortener
|
|
606
620
|
)} is not in the same chunk(s) (expected in chunk(s) ${missingChunksList.join(
|
|
@@ -621,7 +635,7 @@ class ModuleConcatenationPlugin {
|
|
|
621
635
|
incomingConnections.get(null) || incomingConnections.get(undefined);
|
|
622
636
|
if (incomingConnectionsFromNonModules) {
|
|
623
637
|
const activeNonModulesConnections =
|
|
624
|
-
incomingConnectionsFromNonModules.filter(connection =>
|
|
638
|
+
incomingConnectionsFromNonModules.filter((connection) =>
|
|
625
639
|
// We are not interested in inactive connections
|
|
626
640
|
// or connections without dependency
|
|
627
641
|
connection.isActive(runtime)
|
|
@@ -631,11 +645,13 @@ class ModuleConcatenationPlugin {
|
|
|
631
645
|
* @param {RequestShortener} requestShortener request shortener
|
|
632
646
|
* @returns {string} problem description
|
|
633
647
|
*/
|
|
634
|
-
const problem = requestShortener => {
|
|
648
|
+
const problem = (requestShortener) => {
|
|
635
649
|
const importingExplanations = new Set(
|
|
636
|
-
activeNonModulesConnections
|
|
650
|
+
activeNonModulesConnections
|
|
651
|
+
.map((c) => c.explanation)
|
|
652
|
+
.filter(Boolean)
|
|
637
653
|
);
|
|
638
|
-
const explanations =
|
|
654
|
+
const explanations = [...importingExplanations].sort();
|
|
639
655
|
return `Module ${module.readableIdentifier(
|
|
640
656
|
requestShortener
|
|
641
657
|
)} is referenced ${
|
|
@@ -650,7 +666,7 @@ class ModuleConcatenationPlugin {
|
|
|
650
666
|
}
|
|
651
667
|
}
|
|
652
668
|
|
|
653
|
-
/** @type {Map<Module,
|
|
669
|
+
/** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
|
|
654
670
|
const incomingConnectionsFromModules = new Map();
|
|
655
671
|
for (const [originModule, connections] of incomingConnections) {
|
|
656
672
|
if (originModule) {
|
|
@@ -666,18 +682,19 @@ class ModuleConcatenationPlugin {
|
|
|
666
682
|
if (!intersectRuntime(runtime, originRuntime)) continue;
|
|
667
683
|
|
|
668
684
|
// We are not interested in inactive connections
|
|
669
|
-
const activeConnections = connections.filter(connection =>
|
|
685
|
+
const activeConnections = connections.filter((connection) =>
|
|
670
686
|
connection.isActive(runtime)
|
|
671
687
|
);
|
|
672
|
-
if (activeConnections.length > 0)
|
|
688
|
+
if (activeConnections.length > 0) {
|
|
673
689
|
incomingConnectionsFromModules.set(originModule, activeConnections);
|
|
690
|
+
}
|
|
674
691
|
}
|
|
675
692
|
}
|
|
676
693
|
|
|
677
|
-
const incomingModules =
|
|
694
|
+
const incomingModules = [...incomingConnectionsFromModules.keys()];
|
|
678
695
|
|
|
679
696
|
// Module must be in the same chunks like the referencing module
|
|
680
|
-
const otherChunkModules = incomingModules.filter(originModule => {
|
|
697
|
+
const otherChunkModules = incomingModules.filter((originModule) => {
|
|
681
698
|
for (const chunk of chunkGraph.getModuleChunksIterable(
|
|
682
699
|
config.rootModule
|
|
683
700
|
)) {
|
|
@@ -692,9 +709,9 @@ class ModuleConcatenationPlugin {
|
|
|
692
709
|
* @param {RequestShortener} requestShortener request shortener
|
|
693
710
|
* @returns {string} problem description
|
|
694
711
|
*/
|
|
695
|
-
const problem = requestShortener => {
|
|
712
|
+
const problem = (requestShortener) => {
|
|
696
713
|
const names = otherChunkModules
|
|
697
|
-
.map(m => m.readableIdentifier(requestShortener))
|
|
714
|
+
.map((m) => m.readableIdentifier(requestShortener))
|
|
698
715
|
.sort();
|
|
699
716
|
return `Module ${module.readableIdentifier(
|
|
700
717
|
requestShortener
|
|
@@ -707,35 +724,36 @@ class ModuleConcatenationPlugin {
|
|
|
707
724
|
return problem;
|
|
708
725
|
}
|
|
709
726
|
|
|
710
|
-
/** @type {Map<Module,
|
|
727
|
+
/** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
|
|
711
728
|
const nonHarmonyConnections = new Map();
|
|
712
729
|
for (const [originModule, connections] of incomingConnectionsFromModules) {
|
|
713
730
|
const selected = connections.filter(
|
|
714
|
-
connection =>
|
|
731
|
+
(connection) =>
|
|
715
732
|
!connection.dependency ||
|
|
716
733
|
!(connection.dependency instanceof HarmonyImportDependency)
|
|
717
734
|
);
|
|
718
|
-
if (selected.length > 0)
|
|
735
|
+
if (selected.length > 0) {
|
|
719
736
|
nonHarmonyConnections.set(originModule, connections);
|
|
737
|
+
}
|
|
720
738
|
}
|
|
721
739
|
if (nonHarmonyConnections.size > 0) {
|
|
722
740
|
/**
|
|
723
741
|
* @param {RequestShortener} requestShortener request shortener
|
|
724
742
|
* @returns {string} problem description
|
|
725
743
|
*/
|
|
726
|
-
const problem = requestShortener => {
|
|
727
|
-
const names =
|
|
744
|
+
const problem = (requestShortener) => {
|
|
745
|
+
const names = [...nonHarmonyConnections]
|
|
728
746
|
.map(
|
|
729
747
|
([originModule, connections]) =>
|
|
730
748
|
`${originModule.readableIdentifier(
|
|
731
749
|
requestShortener
|
|
732
|
-
)} (referenced with ${
|
|
733
|
-
new Set(
|
|
750
|
+
)} (referenced with ${[
|
|
751
|
+
...new Set(
|
|
734
752
|
connections
|
|
735
|
-
.map(c => c.dependency && c.dependency.type)
|
|
753
|
+
.map((c) => c.dependency && c.dependency.type)
|
|
736
754
|
.filter(Boolean)
|
|
737
755
|
)
|
|
738
|
-
|
|
756
|
+
]
|
|
739
757
|
.sort()
|
|
740
758
|
.join(", ")})`
|
|
741
759
|
)
|
|
@@ -762,7 +780,7 @@ class ModuleConcatenationPlugin {
|
|
|
762
780
|
/** @type {false | RuntimeSpec} */
|
|
763
781
|
let currentRuntimeCondition = false;
|
|
764
782
|
for (const connection of connections) {
|
|
765
|
-
const runtimeCondition = filterRuntime(runtime, runtime =>
|
|
783
|
+
const runtimeCondition = filterRuntime(runtime, (runtime) =>
|
|
766
784
|
connection.isTargetActive(runtime)
|
|
767
785
|
);
|
|
768
786
|
if (runtimeCondition === false) continue;
|
|
@@ -784,7 +802,7 @@ class ModuleConcatenationPlugin {
|
|
|
784
802
|
* @param {RequestShortener} requestShortener request shortener
|
|
785
803
|
* @returns {string} problem description
|
|
786
804
|
*/
|
|
787
|
-
const problem = requestShortener =>
|
|
805
|
+
const problem = (requestShortener) =>
|
|
788
806
|
`Module ${module.readableIdentifier(
|
|
789
807
|
requestShortener
|
|
790
808
|
)} is runtime-dependent referenced by these modules: ${Array.from(
|
|
@@ -846,6 +864,9 @@ class ModuleConcatenationPlugin {
|
|
|
846
864
|
}
|
|
847
865
|
}
|
|
848
866
|
|
|
867
|
+
/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
|
|
868
|
+
/** @typedef {Map<Module, Problem>} Warnings */
|
|
869
|
+
|
|
849
870
|
class ConcatConfiguration {
|
|
850
871
|
/**
|
|
851
872
|
* @param {Module} rootModule the root module
|
|
@@ -857,7 +878,7 @@ class ConcatConfiguration {
|
|
|
857
878
|
/** @type {Set<Module>} */
|
|
858
879
|
this.modules = new Set();
|
|
859
880
|
this.modules.add(rootModule);
|
|
860
|
-
/** @type {
|
|
881
|
+
/** @type {Warnings} */
|
|
861
882
|
this.warnings = new Map();
|
|
862
883
|
}
|
|
863
884
|
|
|
@@ -882,18 +903,18 @@ class ConcatConfiguration {
|
|
|
882
903
|
|
|
883
904
|
/**
|
|
884
905
|
* @param {Module} module the module
|
|
885
|
-
* @param {
|
|
906
|
+
* @param {Problem} problem the problem
|
|
886
907
|
*/
|
|
887
908
|
addWarning(module, problem) {
|
|
888
909
|
this.warnings.set(module, problem);
|
|
889
910
|
}
|
|
890
911
|
|
|
891
912
|
/**
|
|
892
|
-
* @returns {
|
|
913
|
+
* @returns {Warnings} warnings
|
|
893
914
|
*/
|
|
894
915
|
getWarningsSorted() {
|
|
895
916
|
return new Map(
|
|
896
|
-
|
|
917
|
+
[...this.warnings].sort((a, b) => {
|
|
897
918
|
const ai = a[0].identifier();
|
|
898
919
|
const bi = b[0].identifier();
|
|
899
920
|
if (ai < bi) return -1;
|