@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -7,10 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
const asyncLib = require("neo-async");
|
|
9
9
|
const ChunkGraph = require("../ChunkGraph");
|
|
10
|
+
const Dependency = require("../Dependency");
|
|
11
|
+
const Module = require("../Module");
|
|
10
12
|
const ModuleGraph = require("../ModuleGraph");
|
|
11
13
|
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
12
14
|
const { STAGE_DEFAULT } = require("../OptimizationStages");
|
|
15
|
+
const CommonJsSelfReferenceDependency = require("../dependencies/CommonJsSelfReferenceDependency");
|
|
13
16
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
17
|
+
const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
|
|
14
18
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
|
15
19
|
const {
|
|
16
20
|
filterRuntime,
|
|
@@ -21,16 +25,38 @@ const {
|
|
|
21
25
|
} = require("../util/runtime");
|
|
22
26
|
const ConcatenatedModule = require("./ConcatenatedModule");
|
|
23
27
|
|
|
28
|
+
/** @typedef {import("../Chunk")} Chunk */
|
|
24
29
|
/** @typedef {import("../Compilation")} Compilation */
|
|
25
30
|
/** @typedef {import("../Compiler")} Compiler */
|
|
26
|
-
/** @typedef {import("../Module")} Module */
|
|
27
31
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
32
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
28
33
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
29
34
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
30
35
|
|
|
31
36
|
/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
|
|
32
37
|
|
|
33
38
|
/**
|
|
39
|
+
* Merged runtime of all chunks a module is in, memoized for the whole pass.
|
|
40
|
+
* Safe: the chunk graph is not mutated while configurations are built.
|
|
41
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
42
|
+
* @param {Map<Module, RuntimeSpec>} cache memoization cache
|
|
43
|
+
* @param {Module} module the module
|
|
44
|
+
* @returns {RuntimeSpec} the merged runtime
|
|
45
|
+
*/
|
|
46
|
+
const getMergedModuleRuntime = (chunkGraph, cache, module) => {
|
|
47
|
+
const cached = cache.get(module);
|
|
48
|
+
if (cached !== undefined || cache.has(module)) return cached;
|
|
49
|
+
/** @type {RuntimeSpec} */
|
|
50
|
+
let runtime;
|
|
51
|
+
for (const r of chunkGraph.getModuleRuntimes(module)) {
|
|
52
|
+
runtime = mergeRuntimeOwned(runtime, r);
|
|
53
|
+
}
|
|
54
|
+
cache.set(module, runtime);
|
|
55
|
+
return runtime;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Defines the statistics type used by this module.
|
|
34
60
|
* @typedef {object} Statistics
|
|
35
61
|
* @property {number} cached
|
|
36
62
|
* @property {number} alreadyInConfig
|
|
@@ -45,6 +71,24 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
45
71
|
*/
|
|
46
72
|
|
|
47
73
|
/**
|
|
74
|
+
* Record why `module` can't be added (so retried lookups hit the cache), bump
|
|
75
|
+
* the matching statistic, and return the problem to bubble up the recursion.
|
|
76
|
+
* Only reached on failure, so it stays off the hot success path.
|
|
77
|
+
* @param {Map<Module, Problem>} failureCache per-module failure cache
|
|
78
|
+
* @param {Statistics} statistics running statistics
|
|
79
|
+
* @param {keyof Statistics} statKey statistic to increment
|
|
80
|
+
* @param {Module} module the module that couldn't be added
|
|
81
|
+
* @param {Problem} problem the failure to cache and return
|
|
82
|
+
* @returns {Problem} the same problem
|
|
83
|
+
*/
|
|
84
|
+
const cacheFailure = (failureCache, statistics, statKey, module, problem) => {
|
|
85
|
+
statistics[statKey]++;
|
|
86
|
+
failureCache.set(module, problem);
|
|
87
|
+
return problem;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Format bailout reason.
|
|
48
92
|
* @param {string} msg message
|
|
49
93
|
* @returns {string} formatted message
|
|
50
94
|
*/
|
|
@@ -54,7 +98,7 @@ const PLUGIN_NAME = "ModuleConcatenationPlugin";
|
|
|
54
98
|
|
|
55
99
|
class ModuleConcatenationPlugin {
|
|
56
100
|
/**
|
|
57
|
-
*
|
|
101
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
58
102
|
* @param {Compiler} compiler the compiler instance
|
|
59
103
|
* @returns {void}
|
|
60
104
|
*/
|
|
@@ -71,6 +115,7 @@ class ModuleConcatenationPlugin {
|
|
|
71
115
|
const bailoutReasonMap = new Map();
|
|
72
116
|
|
|
73
117
|
/**
|
|
118
|
+
* Sets bailout reason.
|
|
74
119
|
* @param {Module} module the module
|
|
75
120
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
76
121
|
*/
|
|
@@ -86,6 +131,7 @@ class ModuleConcatenationPlugin {
|
|
|
86
131
|
};
|
|
87
132
|
|
|
88
133
|
/**
|
|
134
|
+
* Sets inner bailout reason.
|
|
89
135
|
* @param {Module} module the module
|
|
90
136
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
91
137
|
*/
|
|
@@ -94,6 +140,7 @@ class ModuleConcatenationPlugin {
|
|
|
94
140
|
};
|
|
95
141
|
|
|
96
142
|
/**
|
|
143
|
+
* Gets inner bailout reason.
|
|
97
144
|
* @param {Module} module the module
|
|
98
145
|
* @param {RequestShortener} requestShortener the request shortener
|
|
99
146
|
* @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
|
|
@@ -105,6 +152,7 @@ class ModuleConcatenationPlugin {
|
|
|
105
152
|
};
|
|
106
153
|
|
|
107
154
|
/**
|
|
155
|
+
* Format bailout warning.
|
|
108
156
|
* @param {Module} module the module
|
|
109
157
|
* @param {Problem} problem the problem
|
|
110
158
|
* @returns {(requestShortener: RequestShortener) => string} the reason
|
|
@@ -149,9 +197,16 @@ class ModuleConcatenationPlugin {
|
|
|
149
197
|
const relevantModules = [];
|
|
150
198
|
/** @type {Set<Module>} */
|
|
151
199
|
const possibleInners = new Set();
|
|
200
|
+
const concatenateModules =
|
|
201
|
+
compilation.options.optimization.concatenateModules;
|
|
152
202
|
const context = {
|
|
153
203
|
chunkGraph,
|
|
154
|
-
moduleGraph
|
|
204
|
+
moduleGraph,
|
|
205
|
+
// commonjs concatenation defaults to on; { commonjs: false } opts out
|
|
206
|
+
concatenateCommonJsModules:
|
|
207
|
+
typeof concatenateModules === "object"
|
|
208
|
+
? concatenateModules.commonjs !== false
|
|
209
|
+
: concatenateModules === true
|
|
155
210
|
};
|
|
156
211
|
const deferEnabled = compilation.options.experiments.deferImport;
|
|
157
212
|
logger.time("select relevant modules");
|
|
@@ -170,7 +225,6 @@ class ModuleConcatenationPlugin {
|
|
|
170
225
|
setBailoutReason(module, "Module is async");
|
|
171
226
|
continue;
|
|
172
227
|
}
|
|
173
|
-
|
|
174
228
|
// Must be in strict mode
|
|
175
229
|
if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
|
|
176
230
|
setBailoutReason(module, "Module is not in strict mode");
|
|
@@ -222,6 +276,22 @@ class ModuleConcatenationPlugin {
|
|
|
222
276
|
canBeRoot = false;
|
|
223
277
|
}
|
|
224
278
|
|
|
279
|
+
// TODO: ConcatenatedModule.getSourceTypes only javascript now
|
|
280
|
+
const basicTypes = Module.getSourceBasicTypes(module);
|
|
281
|
+
if (basicTypes.size !== 1 || !basicTypes.has(JAVASCRIPT_TYPE)) {
|
|
282
|
+
canBeRoot = false;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// A concatenated CommonJS module relies on the root's ESM export
|
|
286
|
+
// rendering, so it can only be an inner module
|
|
287
|
+
if (
|
|
288
|
+
module.type.startsWith("javascript/") &&
|
|
289
|
+
/** @type {BuildMeta} */
|
|
290
|
+
(module.buildMeta).exportsType !== "namespace"
|
|
291
|
+
) {
|
|
292
|
+
canBeRoot = false;
|
|
293
|
+
}
|
|
294
|
+
|
|
225
295
|
// Module must not be an entry point
|
|
226
296
|
if (chunkGraph.isEntryModule(module)) {
|
|
227
297
|
setInnerBailoutReason(module, "Module is an entry point");
|
|
@@ -273,17 +343,20 @@ class ModuleConcatenationPlugin {
|
|
|
273
343
|
const concatConfigurations = [];
|
|
274
344
|
/** @type {Set<Module>} */
|
|
275
345
|
const usedAsInner = new Set();
|
|
346
|
+
// module -> merged runtime of its chunks, shared across all roots
|
|
347
|
+
/** @type {Map<Module, RuntimeSpec>} */
|
|
348
|
+
const moduleRuntimeCache = new Map();
|
|
276
349
|
for (const currentRoot of relevantModules) {
|
|
277
350
|
// when used by another configuration as inner:
|
|
278
351
|
// the other configuration is better and we can skip this one
|
|
279
352
|
// TODO reconsider that when it's only used in a different runtime
|
|
280
353
|
if (usedAsInner.has(currentRoot)) continue;
|
|
281
354
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
355
|
+
const chunkRuntime = getMergedModuleRuntime(
|
|
356
|
+
chunkGraph,
|
|
357
|
+
moduleRuntimeCache,
|
|
358
|
+
currentRoot
|
|
359
|
+
);
|
|
287
360
|
const exportsInfo = moduleGraph.getExportsInfo(currentRoot);
|
|
288
361
|
const filteredRuntime = filterRuntime(chunkRuntime, (r) =>
|
|
289
362
|
exportsInfo.isModuleUsed(r)
|
|
@@ -295,10 +368,12 @@ class ModuleConcatenationPlugin {
|
|
|
295
368
|
? undefined
|
|
296
369
|
: filteredRuntime;
|
|
297
370
|
|
|
298
|
-
// create a configuration with the root
|
|
371
|
+
// create a configuration with the root; cache the root's chunks once
|
|
372
|
+
// so every candidate check reuses them instead of re-materializing
|
|
299
373
|
const currentConfiguration = new ConcatConfiguration(
|
|
300
374
|
currentRoot,
|
|
301
|
-
activeRuntime
|
|
375
|
+
activeRuntime,
|
|
376
|
+
[...chunkGraph.getModuleChunksIterable(currentRoot)]
|
|
302
377
|
);
|
|
303
378
|
|
|
304
379
|
// cache failures to add modules
|
|
@@ -330,6 +405,7 @@ class ModuleConcatenationPlugin {
|
|
|
330
405
|
possibleInners,
|
|
331
406
|
impCandidates,
|
|
332
407
|
failureCache,
|
|
408
|
+
moduleRuntimeCache,
|
|
333
409
|
chunkGraph,
|
|
334
410
|
true,
|
|
335
411
|
stats
|
|
@@ -375,10 +451,10 @@ class ModuleConcatenationPlugin {
|
|
|
375
451
|
logger.debug(
|
|
376
452
|
`${statsCandidates} candidates were considered for adding (${stats.cached} cached failure, ${stats.alreadyInConfig} already in config, ${stats.invalidModule} invalid module, ${stats.incorrectChunks} incorrect chunks, ${stats.incorrectDependency} incorrect dependency, ${stats.incorrectChunksOfImporter} incorrect chunks of importer, ${stats.incorrectModuleDependency} incorrect module dependency, ${stats.incorrectRuntimeCondition} incorrect runtime condition, ${stats.importerFailed} importer failed, ${stats.added} added)`
|
|
377
453
|
);
|
|
378
|
-
//
|
|
379
|
-
//
|
|
380
|
-
//
|
|
381
|
-
//
|
|
454
|
+
// Create the largest configurations first: if a root also ended up inside
|
|
455
|
+
// a bigger configuration, the bigger one wins (smaller skipped below).
|
|
456
|
+
// Configurations can't be reused across roots: a module shared by several
|
|
457
|
+
// chunks is concatenated into each consumer (module duplication).
|
|
382
458
|
logger.time("sort concat configurations");
|
|
383
459
|
concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
|
|
384
460
|
logger.timeEnd("sort concat configurations");
|
|
@@ -391,8 +467,8 @@ class ModuleConcatenationPlugin {
|
|
|
391
467
|
(concatConfiguration, callback) => {
|
|
392
468
|
const rootModule = concatConfiguration.rootModule;
|
|
393
469
|
|
|
394
|
-
//
|
|
395
|
-
//
|
|
470
|
+
// Root already concatenated into a larger configuration: skip.
|
|
471
|
+
// (Inner modules may still be shared, e.g. duplicated across entries.)
|
|
396
472
|
if (usedModules.has(rootModule)) return callback();
|
|
397
473
|
const modules = concatConfiguration.getModules();
|
|
398
474
|
for (const m of modules) {
|
|
@@ -454,7 +530,8 @@ class ModuleConcatenationPlugin {
|
|
|
454
530
|
(c) =>
|
|
455
531
|
c.originModule === m &&
|
|
456
532
|
!(
|
|
457
|
-
c.dependency
|
|
533
|
+
c.dependency &&
|
|
534
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
458
535
|
modules.has(c.module)
|
|
459
536
|
)
|
|
460
537
|
);
|
|
@@ -497,7 +574,8 @@ class ModuleConcatenationPlugin {
|
|
|
497
574
|
const otherModule =
|
|
498
575
|
c.module === rootModule ? c.originModule : c.module;
|
|
499
576
|
const innerConnection =
|
|
500
|
-
c.dependency
|
|
577
|
+
c.dependency &&
|
|
578
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
501
579
|
modules.has(/** @type {Module} */ (otherModule));
|
|
502
580
|
return !innerConnection;
|
|
503
581
|
}
|
|
@@ -521,6 +599,27 @@ class ModuleConcatenationPlugin {
|
|
|
521
599
|
}
|
|
522
600
|
|
|
523
601
|
/**
|
|
602
|
+
* Checks whether the module `import defer`s a module already in the config.
|
|
603
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
604
|
+
* @param {Module} module the candidate module
|
|
605
|
+
* @param {ConcatConfiguration} config the concat configuration
|
|
606
|
+
* @returns {boolean} true when a deferred import targets a module in the config
|
|
607
|
+
*/
|
|
608
|
+
_defersModuleIn(moduleGraph, module, config) {
|
|
609
|
+
for (const dep of module.dependencies) {
|
|
610
|
+
if (
|
|
611
|
+
dep instanceof HarmonyImportDependency &&
|
|
612
|
+
ImportPhaseUtils.isDefer(dep.phase)
|
|
613
|
+
) {
|
|
614
|
+
const target = moduleGraph.getModule(dep);
|
|
615
|
+
if (target && config.has(target)) return true;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return false;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Returns the imported modules.
|
|
524
623
|
* @param {Compilation} compilation the compilation
|
|
525
624
|
* @param {Module} module the module to be added
|
|
526
625
|
* @param {RuntimeSpec} runtime the runtime scope
|
|
@@ -531,8 +630,8 @@ class ModuleConcatenationPlugin {
|
|
|
531
630
|
/** @type {Set<Module>} */
|
|
532
631
|
const set = new Set();
|
|
533
632
|
for (const dep of module.dependencies) {
|
|
534
|
-
// Get reference info only for
|
|
535
|
-
if (!(dep
|
|
633
|
+
// Get reference info only for dependencies that support concatenation
|
|
634
|
+
if (!Dependency.canConcatenate(dep)) continue;
|
|
536
635
|
|
|
537
636
|
const connection = moduleGraph.getConnection(dep);
|
|
538
637
|
// Reference is valid and has a module
|
|
@@ -562,6 +661,7 @@ class ModuleConcatenationPlugin {
|
|
|
562
661
|
}
|
|
563
662
|
|
|
564
663
|
/**
|
|
664
|
+
* Returns the problematic module.
|
|
565
665
|
* @param {Compilation} compilation webpack compilation
|
|
566
666
|
* @param {ConcatConfiguration} config concat configuration (will be modified when added)
|
|
567
667
|
* @param {Module} module the module to be added
|
|
@@ -570,6 +670,7 @@ class ModuleConcatenationPlugin {
|
|
|
570
670
|
* @param {Set<Module>} possibleModules modules that are candidates
|
|
571
671
|
* @param {Set<Module>} candidates list of potential candidates (will be added to)
|
|
572
672
|
* @param {Map<Module, Problem>} failureCache cache for problematic modules to be more performant
|
|
673
|
+
* @param {Map<Module, RuntimeSpec>} moduleRuntimeCache memoized merged runtime per module, shared across roots
|
|
573
674
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
574
675
|
* @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
|
|
575
676
|
* @param {Statistics} statistics gathering metrics
|
|
@@ -584,6 +685,7 @@ class ModuleConcatenationPlugin {
|
|
|
584
685
|
possibleModules,
|
|
585
686
|
candidates,
|
|
586
687
|
failureCache,
|
|
688
|
+
moduleRuntimeCache,
|
|
587
689
|
chunkGraph,
|
|
588
690
|
avoidMutateOnFailure,
|
|
589
691
|
statistics
|
|
@@ -602,17 +704,46 @@ class ModuleConcatenationPlugin {
|
|
|
602
704
|
|
|
603
705
|
// Not possible to add?
|
|
604
706
|
if (!possibleModules.has(module)) {
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
707
|
+
return cacheFailure(
|
|
708
|
+
failureCache,
|
|
709
|
+
statistics,
|
|
710
|
+
"invalidModule",
|
|
711
|
+
module,
|
|
712
|
+
module
|
|
713
|
+
);
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
// A deferred import must stay a concatenation boundary: concatenating a
|
|
717
|
+
// module with a module it `import defer`s (a cycle) would erase the
|
|
718
|
+
// deferred namespace's lazy-evaluation and exotic-object semantics.
|
|
719
|
+
if (
|
|
720
|
+
compilation.options.experiments.deferImport &&
|
|
721
|
+
this._defersModuleIn(compilation.moduleGraph, module, config)
|
|
722
|
+
) {
|
|
723
|
+
/**
|
|
724
|
+
* @param {RequestShortener} requestShortener request shortener
|
|
725
|
+
* @returns {string} problem description
|
|
726
|
+
*/
|
|
727
|
+
const problem = (requestShortener) =>
|
|
728
|
+
`Module ${module.readableIdentifier(
|
|
729
|
+
requestShortener
|
|
730
|
+
)} imports a module in this configuration via import defer`;
|
|
731
|
+
return cacheFailure(
|
|
732
|
+
failureCache,
|
|
733
|
+
statistics,
|
|
734
|
+
"incorrectDependency",
|
|
735
|
+
module,
|
|
736
|
+
problem
|
|
737
|
+
);
|
|
608
738
|
}
|
|
609
739
|
|
|
610
740
|
// Module must be in the correct chunks
|
|
611
|
-
const missingChunks =
|
|
612
|
-
|
|
613
|
-
|
|
741
|
+
const missingChunks = config.rootChunks.filter(
|
|
742
|
+
(chunk) => !chunkGraph.isModuleInChunk(module, chunk)
|
|
743
|
+
);
|
|
614
744
|
if (missingChunks.length > 0) {
|
|
615
745
|
/**
|
|
746
|
+
* Returns problem description.
|
|
616
747
|
* @param {RequestShortener} requestShortener request shortener
|
|
617
748
|
* @returns {string} problem description
|
|
618
749
|
*/
|
|
@@ -635,9 +766,13 @@ class ModuleConcatenationPlugin {
|
|
|
635
766
|
", "
|
|
636
767
|
)}, module is in chunk(s) ${chunks.join(", ")})`;
|
|
637
768
|
};
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
769
|
+
return cacheFailure(
|
|
770
|
+
failureCache,
|
|
771
|
+
statistics,
|
|
772
|
+
"incorrectChunks",
|
|
773
|
+
module,
|
|
774
|
+
problem
|
|
775
|
+
);
|
|
641
776
|
}
|
|
642
777
|
|
|
643
778
|
const moduleGraph = compilation.moduleGraph;
|
|
@@ -656,6 +791,7 @@ class ModuleConcatenationPlugin {
|
|
|
656
791
|
);
|
|
657
792
|
if (activeNonModulesConnections.length > 0) {
|
|
658
793
|
/**
|
|
794
|
+
* Returns problem description.
|
|
659
795
|
* @param {RequestShortener} requestShortener request shortener
|
|
660
796
|
* @returns {string} problem description
|
|
661
797
|
*/
|
|
@@ -675,9 +811,13 @@ class ModuleConcatenationPlugin {
|
|
|
675
811
|
: "in an unsupported way"
|
|
676
812
|
}`;
|
|
677
813
|
};
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
814
|
+
return cacheFailure(
|
|
815
|
+
failureCache,
|
|
816
|
+
statistics,
|
|
817
|
+
"incorrectDependency",
|
|
818
|
+
module,
|
|
819
|
+
problem
|
|
820
|
+
);
|
|
681
821
|
}
|
|
682
822
|
}
|
|
683
823
|
|
|
@@ -689,11 +829,11 @@ class ModuleConcatenationPlugin {
|
|
|
689
829
|
if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
|
|
690
830
|
|
|
691
831
|
// We don't care for connections from other runtimes
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
832
|
+
const originRuntime = getMergedModuleRuntime(
|
|
833
|
+
chunkGraph,
|
|
834
|
+
moduleRuntimeCache,
|
|
835
|
+
originModule
|
|
836
|
+
);
|
|
697
837
|
|
|
698
838
|
if (!intersectRuntime(runtime, originRuntime)) continue;
|
|
699
839
|
|
|
@@ -711,9 +851,7 @@ class ModuleConcatenationPlugin {
|
|
|
711
851
|
|
|
712
852
|
// Module must be in the same chunks like the referencing module
|
|
713
853
|
const otherChunkModules = incomingModules.filter((originModule) => {
|
|
714
|
-
for (const chunk of
|
|
715
|
-
config.rootModule
|
|
716
|
-
)) {
|
|
854
|
+
for (const chunk of config.rootChunks) {
|
|
717
855
|
if (!chunkGraph.isModuleInChunk(originModule, chunk)) {
|
|
718
856
|
return true;
|
|
719
857
|
}
|
|
@@ -722,6 +860,7 @@ class ModuleConcatenationPlugin {
|
|
|
722
860
|
});
|
|
723
861
|
if (otherChunkModules.length > 0) {
|
|
724
862
|
/**
|
|
863
|
+
* Returns problem description.
|
|
725
864
|
* @param {RequestShortener} requestShortener request shortener
|
|
726
865
|
* @returns {string} problem description
|
|
727
866
|
*/
|
|
@@ -735,9 +874,13 @@ class ModuleConcatenationPlugin {
|
|
|
735
874
|
", "
|
|
736
875
|
)}`;
|
|
737
876
|
};
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
877
|
+
return cacheFailure(
|
|
878
|
+
failureCache,
|
|
879
|
+
statistics,
|
|
880
|
+
"incorrectChunksOfImporter",
|
|
881
|
+
module,
|
|
882
|
+
problem
|
|
883
|
+
);
|
|
741
884
|
}
|
|
742
885
|
|
|
743
886
|
/** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
|
|
@@ -746,7 +889,13 @@ class ModuleConcatenationPlugin {
|
|
|
746
889
|
const selected = connections.filter(
|
|
747
890
|
(connection) =>
|
|
748
891
|
!connection.dependency ||
|
|
749
|
-
!(connection.dependency
|
|
892
|
+
(!Dependency.canConcatenate(connection.dependency) &&
|
|
893
|
+
// exports self-references of a concatenated CommonJS module
|
|
894
|
+
// are rewritten in place, so they don't block concatenation
|
|
895
|
+
!(
|
|
896
|
+
originModule === module &&
|
|
897
|
+
connection.dependency instanceof CommonJsSelfReferenceDependency
|
|
898
|
+
))
|
|
750
899
|
);
|
|
751
900
|
if (selected.length > 0) {
|
|
752
901
|
nonHarmonyConnections.set(originModule, connections);
|
|
@@ -754,6 +903,7 @@ class ModuleConcatenationPlugin {
|
|
|
754
903
|
}
|
|
755
904
|
if (nonHarmonyConnections.size > 0) {
|
|
756
905
|
/**
|
|
906
|
+
* Returns problem description.
|
|
757
907
|
* @param {RequestShortener} requestShortener request shortener
|
|
758
908
|
* @returns {string} problem description
|
|
759
909
|
*/
|
|
@@ -780,9 +930,13 @@ class ModuleConcatenationPlugin {
|
|
|
780
930
|
", "
|
|
781
931
|
)}`;
|
|
782
932
|
};
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
933
|
+
return cacheFailure(
|
|
934
|
+
failureCache,
|
|
935
|
+
statistics,
|
|
936
|
+
"incorrectModuleDependency",
|
|
937
|
+
module,
|
|
938
|
+
problem
|
|
939
|
+
);
|
|
786
940
|
}
|
|
787
941
|
|
|
788
942
|
if (runtime !== undefined && typeof runtime !== "string") {
|
|
@@ -815,6 +969,7 @@ class ModuleConcatenationPlugin {
|
|
|
815
969
|
}
|
|
816
970
|
if (otherRuntimeConnections.length > 0) {
|
|
817
971
|
/**
|
|
972
|
+
* Returns problem description.
|
|
818
973
|
* @param {RequestShortener} requestShortener request shortener
|
|
819
974
|
* @returns {string} problem description
|
|
820
975
|
*/
|
|
@@ -832,9 +987,13 @@ class ModuleConcatenationPlugin {
|
|
|
832
987
|
/** @type {RuntimeSpec} */ (runtimeCondition)
|
|
833
988
|
)})`
|
|
834
989
|
).join(", ")}`;
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
990
|
+
return cacheFailure(
|
|
991
|
+
failureCache,
|
|
992
|
+
statistics,
|
|
993
|
+
"incorrectRuntimeCondition",
|
|
994
|
+
module,
|
|
995
|
+
problem
|
|
996
|
+
);
|
|
838
997
|
}
|
|
839
998
|
}
|
|
840
999
|
|
|
@@ -860,15 +1019,20 @@ class ModuleConcatenationPlugin {
|
|
|
860
1019
|
possibleModules,
|
|
861
1020
|
candidates,
|
|
862
1021
|
failureCache,
|
|
1022
|
+
moduleRuntimeCache,
|
|
863
1023
|
chunkGraph,
|
|
864
1024
|
false,
|
|
865
1025
|
statistics
|
|
866
1026
|
);
|
|
867
1027
|
if (problem) {
|
|
868
1028
|
if (backup !== undefined) config.rollback(backup);
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
1029
|
+
return cacheFailure(
|
|
1030
|
+
failureCache,
|
|
1031
|
+
statistics,
|
|
1032
|
+
"importerFailed",
|
|
1033
|
+
module,
|
|
1034
|
+
problem
|
|
1035
|
+
);
|
|
872
1036
|
}
|
|
873
1037
|
}
|
|
874
1038
|
|
|
@@ -885,14 +1049,18 @@ class ModuleConcatenationPlugin {
|
|
|
885
1049
|
|
|
886
1050
|
class ConcatConfiguration {
|
|
887
1051
|
/**
|
|
1052
|
+
* Creates an instance of ConcatConfiguration.
|
|
888
1053
|
* @param {Module} rootModule the root module
|
|
889
1054
|
* @param {RuntimeSpec} runtime the runtime
|
|
1055
|
+
* @param {Chunk[]} rootChunks the chunks the root module is in
|
|
890
1056
|
*/
|
|
891
|
-
constructor(rootModule, runtime) {
|
|
1057
|
+
constructor(rootModule, runtime, rootChunks) {
|
|
892
1058
|
/** @type {Module} */
|
|
893
1059
|
this.rootModule = rootModule;
|
|
894
1060
|
/** @type {RuntimeSpec} */
|
|
895
1061
|
this.runtime = runtime;
|
|
1062
|
+
/** @type {Chunk[]} the root's chunks, reused for every candidate's chunk check */
|
|
1063
|
+
this.rootChunks = rootChunks;
|
|
896
1064
|
/** @type {Set<Module>} */
|
|
897
1065
|
this.modules = new Set();
|
|
898
1066
|
this.modules.add(rootModule);
|
|
@@ -901,6 +1069,7 @@ class ConcatConfiguration {
|
|
|
901
1069
|
}
|
|
902
1070
|
|
|
903
1071
|
/**
|
|
1072
|
+
* Processes the provided module.
|
|
904
1073
|
* @param {Module} module the module
|
|
905
1074
|
*/
|
|
906
1075
|
add(module) {
|
|
@@ -908,6 +1077,7 @@ class ConcatConfiguration {
|
|
|
908
1077
|
}
|
|
909
1078
|
|
|
910
1079
|
/**
|
|
1080
|
+
* Returns true, when the module is in the module set.
|
|
911
1081
|
* @param {Module} module the module
|
|
912
1082
|
* @returns {boolean} true, when the module is in the module set
|
|
913
1083
|
*/
|
|
@@ -920,6 +1090,7 @@ class ConcatConfiguration {
|
|
|
920
1090
|
}
|
|
921
1091
|
|
|
922
1092
|
/**
|
|
1093
|
+
* Adds the provided module to the concat configuration.
|
|
923
1094
|
* @param {Module} module the module
|
|
924
1095
|
* @param {Problem} problem the problem
|
|
925
1096
|
*/
|
|
@@ -928,6 +1099,7 @@ class ConcatConfiguration {
|
|
|
928
1099
|
}
|
|
929
1100
|
|
|
930
1101
|
/**
|
|
1102
|
+
* Gets warnings sorted.
|
|
931
1103
|
* @returns {Warnings} warnings
|
|
932
1104
|
*/
|
|
933
1105
|
getWarningsSorted() {
|
|
@@ -943,6 +1115,7 @@ class ConcatConfiguration {
|
|
|
943
1115
|
}
|
|
944
1116
|
|
|
945
1117
|
/**
|
|
1118
|
+
* Returns modules as set.
|
|
946
1119
|
* @returns {Set<Module>} modules as set
|
|
947
1120
|
*/
|
|
948
1121
|
getModules() {
|
|
@@ -954,6 +1127,7 @@ class ConcatConfiguration {
|
|
|
954
1127
|
}
|
|
955
1128
|
|
|
956
1129
|
/**
|
|
1130
|
+
* Processes the provided snapshot.
|
|
957
1131
|
* @param {number} snapshot snapshot
|
|
958
1132
|
*/
|
|
959
1133
|
rollback(snapshot) {
|