@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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
|
@@ -20,11 +20,13 @@ const { compareSelect, compareStringsNumeric } = require("../util/comparators");
|
|
|
20
20
|
/** @typedef {import("../util/concatenate").UsedNames} UsedNames */
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
+
* Defines the comparator type used by this module.
|
|
23
24
|
* @template T
|
|
24
25
|
* @typedef {import("../util/comparators").Comparator<T>} Comparator
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
28
|
/**
|
|
29
|
+
* Checks whether it can mangle.
|
|
28
30
|
* @param {ExportsInfo} exportsInfo exports info
|
|
29
31
|
* @returns {boolean} mangle is possible
|
|
30
32
|
*/
|
|
@@ -45,6 +47,7 @@ const canMangle = (exportsInfo) => {
|
|
|
45
47
|
/** @type {Comparator<ExportInfo>} */
|
|
46
48
|
const comparator = compareSelect((e) => e.name, compareStringsNumeric);
|
|
47
49
|
/**
|
|
50
|
+
* Mangle exports info.
|
|
48
51
|
* @param {boolean} deterministic use deterministic names
|
|
49
52
|
* @param {ExportsInfo} exportsInfo exports info
|
|
50
53
|
* @param {boolean | undefined} isNamespace is namespace object
|
|
@@ -158,6 +161,7 @@ const PLUGIN_NAME = "MangleExportsPlugin";
|
|
|
158
161
|
|
|
159
162
|
class MangleExportsPlugin {
|
|
160
163
|
/**
|
|
164
|
+
* Creates an instance of MangleExportsPlugin.
|
|
161
165
|
* @param {boolean} deterministic use deterministic names
|
|
162
166
|
*/
|
|
163
167
|
constructor(deterministic) {
|
|
@@ -166,7 +170,7 @@ class MangleExportsPlugin {
|
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
/**
|
|
169
|
-
*
|
|
173
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
170
174
|
* @param {Compiler} compiler the compiler instance
|
|
171
175
|
* @returns {void}
|
|
172
176
|
*/
|
|
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
|
|
|
16
16
|
|
|
17
17
|
class MergeDuplicateChunksPlugin {
|
|
18
18
|
/**
|
|
19
|
+
* Creates an instance of MergeDuplicateChunksPlugin.
|
|
19
20
|
* @param {MergeDuplicateChunksPluginOptions=} options options object
|
|
20
21
|
*/
|
|
21
22
|
constructor(options = { stage: STAGE_BASIC }) {
|
|
@@ -24,6 +25,7 @@ class MergeDuplicateChunksPlugin {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
/**
|
|
28
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
27
29
|
* @param {Compiler} compiler the compiler
|
|
28
30
|
* @returns {void}
|
|
29
31
|
*/
|
|
@@ -15,6 +15,7 @@ const PLUGIN_NAME = "MinChunkSizePlugin";
|
|
|
15
15
|
|
|
16
16
|
class MinChunkSizePlugin {
|
|
17
17
|
/**
|
|
18
|
+
* Creates an instance of MinChunkSizePlugin.
|
|
18
19
|
* @param {MinChunkSizePluginOptions} options options object
|
|
19
20
|
*/
|
|
20
21
|
constructor(options) {
|
|
@@ -23,7 +24,7 @@ class MinChunkSizePlugin {
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
|
-
*
|
|
27
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
27
28
|
* @param {Compiler} compiler the compiler instance
|
|
28
29
|
* @returns {void}
|
|
29
30
|
*/
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const WebpackError = require("../errors/WebpackError");
|
|
9
|
+
const formatSize = require("../util/formatSize");
|
|
10
10
|
|
|
11
11
|
class MinMaxSizeWarning extends WebpackError {
|
|
12
12
|
/**
|
|
13
|
+
* Creates an instance of MinMaxSizeWarning.
|
|
13
14
|
* @param {string[] | undefined} keys keys
|
|
14
15
|
* @param {number} minSize minimum size
|
|
15
16
|
* @param {number} maxSize maximum size
|
|
@@ -25,8 +26,8 @@ class MinMaxSizeWarning extends WebpackError {
|
|
|
25
26
|
super(
|
|
26
27
|
"SplitChunksPlugin\n" +
|
|
27
28
|
`${keysMessage}\n` +
|
|
28
|
-
`Configured minSize (${
|
|
29
|
-
`bigger than maxSize (${
|
|
29
|
+
`Configured minSize (${formatSize(minSize)}) is ` +
|
|
30
|
+
`bigger than maxSize (${formatSize(maxSize)}).\n` +
|
|
30
31
|
"This seem to be a invalid optimization.splitChunks configuration."
|
|
31
32
|
);
|
|
32
33
|
}
|
|
@@ -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,7 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
45
71
|
*/
|
|
46
72
|
|
|
47
73
|
/**
|
|
74
|
+
* Format bailout reason.
|
|
48
75
|
* @param {string} msg message
|
|
49
76
|
* @returns {string} formatted message
|
|
50
77
|
*/
|
|
@@ -54,7 +81,7 @@ const PLUGIN_NAME = "ModuleConcatenationPlugin";
|
|
|
54
81
|
|
|
55
82
|
class ModuleConcatenationPlugin {
|
|
56
83
|
/**
|
|
57
|
-
*
|
|
84
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
58
85
|
* @param {Compiler} compiler the compiler instance
|
|
59
86
|
* @returns {void}
|
|
60
87
|
*/
|
|
@@ -71,6 +98,7 @@ class ModuleConcatenationPlugin {
|
|
|
71
98
|
const bailoutReasonMap = new Map();
|
|
72
99
|
|
|
73
100
|
/**
|
|
101
|
+
* Sets bailout reason.
|
|
74
102
|
* @param {Module} module the module
|
|
75
103
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
76
104
|
*/
|
|
@@ -86,6 +114,7 @@ class ModuleConcatenationPlugin {
|
|
|
86
114
|
};
|
|
87
115
|
|
|
88
116
|
/**
|
|
117
|
+
* Sets inner bailout reason.
|
|
89
118
|
* @param {Module} module the module
|
|
90
119
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
91
120
|
*/
|
|
@@ -94,6 +123,7 @@ class ModuleConcatenationPlugin {
|
|
|
94
123
|
};
|
|
95
124
|
|
|
96
125
|
/**
|
|
126
|
+
* Gets inner bailout reason.
|
|
97
127
|
* @param {Module} module the module
|
|
98
128
|
* @param {RequestShortener} requestShortener the request shortener
|
|
99
129
|
* @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
|
|
@@ -105,6 +135,7 @@ class ModuleConcatenationPlugin {
|
|
|
105
135
|
};
|
|
106
136
|
|
|
107
137
|
/**
|
|
138
|
+
* Format bailout warning.
|
|
108
139
|
* @param {Module} module the module
|
|
109
140
|
* @param {Problem} problem the problem
|
|
110
141
|
* @returns {(requestShortener: RequestShortener) => string} the reason
|
|
@@ -149,9 +180,16 @@ class ModuleConcatenationPlugin {
|
|
|
149
180
|
const relevantModules = [];
|
|
150
181
|
/** @type {Set<Module>} */
|
|
151
182
|
const possibleInners = new Set();
|
|
183
|
+
const concatenateModules =
|
|
184
|
+
compilation.options.optimization.concatenateModules;
|
|
152
185
|
const context = {
|
|
153
186
|
chunkGraph,
|
|
154
|
-
moduleGraph
|
|
187
|
+
moduleGraph,
|
|
188
|
+
// commonjs concatenation defaults to on; { commonjs: false } opts out
|
|
189
|
+
concatenateCommonJsModules:
|
|
190
|
+
typeof concatenateModules === "object"
|
|
191
|
+
? concatenateModules.commonjs !== false
|
|
192
|
+
: concatenateModules === true
|
|
155
193
|
};
|
|
156
194
|
const deferEnabled = compilation.options.experiments.deferImport;
|
|
157
195
|
logger.time("select relevant modules");
|
|
@@ -170,7 +208,6 @@ class ModuleConcatenationPlugin {
|
|
|
170
208
|
setBailoutReason(module, "Module is async");
|
|
171
209
|
continue;
|
|
172
210
|
}
|
|
173
|
-
|
|
174
211
|
// Must be in strict mode
|
|
175
212
|
if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
|
|
176
213
|
setBailoutReason(module, "Module is not in strict mode");
|
|
@@ -222,6 +259,22 @@ class ModuleConcatenationPlugin {
|
|
|
222
259
|
canBeRoot = false;
|
|
223
260
|
}
|
|
224
261
|
|
|
262
|
+
// TODO: ConcatenatedModule.getSourceTypes only javascript now
|
|
263
|
+
const basicTypes = Module.getSourceBasicTypes(module);
|
|
264
|
+
if (basicTypes.size !== 1 || !basicTypes.has(JAVASCRIPT_TYPE)) {
|
|
265
|
+
canBeRoot = false;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// A concatenated CommonJS module relies on the root's ESM export
|
|
269
|
+
// rendering, so it can only be an inner module
|
|
270
|
+
if (
|
|
271
|
+
module.type.startsWith("javascript/") &&
|
|
272
|
+
/** @type {BuildMeta} */
|
|
273
|
+
(module.buildMeta).exportsType !== "namespace"
|
|
274
|
+
) {
|
|
275
|
+
canBeRoot = false;
|
|
276
|
+
}
|
|
277
|
+
|
|
225
278
|
// Module must not be an entry point
|
|
226
279
|
if (chunkGraph.isEntryModule(module)) {
|
|
227
280
|
setInnerBailoutReason(module, "Module is an entry point");
|
|
@@ -273,17 +326,20 @@ class ModuleConcatenationPlugin {
|
|
|
273
326
|
const concatConfigurations = [];
|
|
274
327
|
/** @type {Set<Module>} */
|
|
275
328
|
const usedAsInner = new Set();
|
|
329
|
+
// module -> merged runtime of its chunks, shared across all roots
|
|
330
|
+
/** @type {Map<Module, RuntimeSpec>} */
|
|
331
|
+
const moduleRuntimeCache = new Map();
|
|
276
332
|
for (const currentRoot of relevantModules) {
|
|
277
333
|
// when used by another configuration as inner:
|
|
278
334
|
// the other configuration is better and we can skip this one
|
|
279
335
|
// TODO reconsider that when it's only used in a different runtime
|
|
280
336
|
if (usedAsInner.has(currentRoot)) continue;
|
|
281
337
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
338
|
+
const chunkRuntime = getMergedModuleRuntime(
|
|
339
|
+
chunkGraph,
|
|
340
|
+
moduleRuntimeCache,
|
|
341
|
+
currentRoot
|
|
342
|
+
);
|
|
287
343
|
const exportsInfo = moduleGraph.getExportsInfo(currentRoot);
|
|
288
344
|
const filteredRuntime = filterRuntime(chunkRuntime, (r) =>
|
|
289
345
|
exportsInfo.isModuleUsed(r)
|
|
@@ -295,10 +351,12 @@ class ModuleConcatenationPlugin {
|
|
|
295
351
|
? undefined
|
|
296
352
|
: filteredRuntime;
|
|
297
353
|
|
|
298
|
-
// create a configuration with the root
|
|
354
|
+
// create a configuration with the root; cache the root's chunks once
|
|
355
|
+
// so every candidate check reuses them instead of re-materializing
|
|
299
356
|
const currentConfiguration = new ConcatConfiguration(
|
|
300
357
|
currentRoot,
|
|
301
|
-
activeRuntime
|
|
358
|
+
activeRuntime,
|
|
359
|
+
[...chunkGraph.getModuleChunksIterable(currentRoot)]
|
|
302
360
|
);
|
|
303
361
|
|
|
304
362
|
// cache failures to add modules
|
|
@@ -330,6 +388,7 @@ class ModuleConcatenationPlugin {
|
|
|
330
388
|
possibleInners,
|
|
331
389
|
impCandidates,
|
|
332
390
|
failureCache,
|
|
391
|
+
moduleRuntimeCache,
|
|
333
392
|
chunkGraph,
|
|
334
393
|
true,
|
|
335
394
|
stats
|
|
@@ -375,10 +434,10 @@ class ModuleConcatenationPlugin {
|
|
|
375
434
|
logger.debug(
|
|
376
435
|
`${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
436
|
);
|
|
378
|
-
//
|
|
379
|
-
//
|
|
380
|
-
//
|
|
381
|
-
//
|
|
437
|
+
// Create the largest configurations first: if a root also ended up inside
|
|
438
|
+
// a bigger configuration, the bigger one wins (smaller skipped below).
|
|
439
|
+
// Configurations can't be reused across roots: a module shared by several
|
|
440
|
+
// chunks is concatenated into each consumer (module duplication).
|
|
382
441
|
logger.time("sort concat configurations");
|
|
383
442
|
concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
|
|
384
443
|
logger.timeEnd("sort concat configurations");
|
|
@@ -391,8 +450,8 @@ class ModuleConcatenationPlugin {
|
|
|
391
450
|
(concatConfiguration, callback) => {
|
|
392
451
|
const rootModule = concatConfiguration.rootModule;
|
|
393
452
|
|
|
394
|
-
//
|
|
395
|
-
//
|
|
453
|
+
// Root already concatenated into a larger configuration: skip.
|
|
454
|
+
// (Inner modules may still be shared, e.g. duplicated across entries.)
|
|
396
455
|
if (usedModules.has(rootModule)) return callback();
|
|
397
456
|
const modules = concatConfiguration.getModules();
|
|
398
457
|
for (const m of modules) {
|
|
@@ -454,7 +513,8 @@ class ModuleConcatenationPlugin {
|
|
|
454
513
|
(c) =>
|
|
455
514
|
c.originModule === m &&
|
|
456
515
|
!(
|
|
457
|
-
c.dependency
|
|
516
|
+
c.dependency &&
|
|
517
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
458
518
|
modules.has(c.module)
|
|
459
519
|
)
|
|
460
520
|
);
|
|
@@ -497,7 +557,8 @@ class ModuleConcatenationPlugin {
|
|
|
497
557
|
const otherModule =
|
|
498
558
|
c.module === rootModule ? c.originModule : c.module;
|
|
499
559
|
const innerConnection =
|
|
500
|
-
c.dependency
|
|
560
|
+
c.dependency &&
|
|
561
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
501
562
|
modules.has(/** @type {Module} */ (otherModule));
|
|
502
563
|
return !innerConnection;
|
|
503
564
|
}
|
|
@@ -521,6 +582,27 @@ class ModuleConcatenationPlugin {
|
|
|
521
582
|
}
|
|
522
583
|
|
|
523
584
|
/**
|
|
585
|
+
* Checks whether the module `import defer`s a module already in the config.
|
|
586
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
587
|
+
* @param {Module} module the candidate module
|
|
588
|
+
* @param {ConcatConfiguration} config the concat configuration
|
|
589
|
+
* @returns {boolean} true when a deferred import targets a module in the config
|
|
590
|
+
*/
|
|
591
|
+
_defersModuleIn(moduleGraph, module, config) {
|
|
592
|
+
for (const dep of module.dependencies) {
|
|
593
|
+
if (
|
|
594
|
+
dep instanceof HarmonyImportDependency &&
|
|
595
|
+
ImportPhaseUtils.isDefer(dep.phase)
|
|
596
|
+
) {
|
|
597
|
+
const target = moduleGraph.getModule(dep);
|
|
598
|
+
if (target && config.has(target)) return true;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
/**
|
|
605
|
+
* Returns the imported modules.
|
|
524
606
|
* @param {Compilation} compilation the compilation
|
|
525
607
|
* @param {Module} module the module to be added
|
|
526
608
|
* @param {RuntimeSpec} runtime the runtime scope
|
|
@@ -531,8 +613,8 @@ class ModuleConcatenationPlugin {
|
|
|
531
613
|
/** @type {Set<Module>} */
|
|
532
614
|
const set = new Set();
|
|
533
615
|
for (const dep of module.dependencies) {
|
|
534
|
-
// Get reference info only for
|
|
535
|
-
if (!(dep
|
|
616
|
+
// Get reference info only for dependencies that support concatenation
|
|
617
|
+
if (!Dependency.canConcatenate(dep)) continue;
|
|
536
618
|
|
|
537
619
|
const connection = moduleGraph.getConnection(dep);
|
|
538
620
|
// Reference is valid and has a module
|
|
@@ -562,6 +644,7 @@ class ModuleConcatenationPlugin {
|
|
|
562
644
|
}
|
|
563
645
|
|
|
564
646
|
/**
|
|
647
|
+
* Returns the problematic module.
|
|
565
648
|
* @param {Compilation} compilation webpack compilation
|
|
566
649
|
* @param {ConcatConfiguration} config concat configuration (will be modified when added)
|
|
567
650
|
* @param {Module} module the module to be added
|
|
@@ -570,6 +653,7 @@ class ModuleConcatenationPlugin {
|
|
|
570
653
|
* @param {Set<Module>} possibleModules modules that are candidates
|
|
571
654
|
* @param {Set<Module>} candidates list of potential candidates (will be added to)
|
|
572
655
|
* @param {Map<Module, Problem>} failureCache cache for problematic modules to be more performant
|
|
656
|
+
* @param {Map<Module, RuntimeSpec>} moduleRuntimeCache memoized merged runtime per module, shared across roots
|
|
573
657
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
574
658
|
* @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
|
|
575
659
|
* @param {Statistics} statistics gathering metrics
|
|
@@ -584,6 +668,7 @@ class ModuleConcatenationPlugin {
|
|
|
584
668
|
possibleModules,
|
|
585
669
|
candidates,
|
|
586
670
|
failureCache,
|
|
671
|
+
moduleRuntimeCache,
|
|
587
672
|
chunkGraph,
|
|
588
673
|
avoidMutateOnFailure,
|
|
589
674
|
statistics
|
|
@@ -607,12 +692,33 @@ class ModuleConcatenationPlugin {
|
|
|
607
692
|
return module;
|
|
608
693
|
}
|
|
609
694
|
|
|
695
|
+
// A deferred import must stay a concatenation boundary: concatenating a
|
|
696
|
+
// module with a module it `import defer`s (a cycle) would erase the
|
|
697
|
+
// deferred namespace's lazy-evaluation and exotic-object semantics.
|
|
698
|
+
if (
|
|
699
|
+
compilation.options.experiments.deferImport &&
|
|
700
|
+
this._defersModuleIn(compilation.moduleGraph, module, config)
|
|
701
|
+
) {
|
|
702
|
+
/**
|
|
703
|
+
* @param {RequestShortener} requestShortener request shortener
|
|
704
|
+
* @returns {string} problem description
|
|
705
|
+
*/
|
|
706
|
+
const problem = (requestShortener) =>
|
|
707
|
+
`Module ${module.readableIdentifier(
|
|
708
|
+
requestShortener
|
|
709
|
+
)} imports a module in this configuration via import defer`;
|
|
710
|
+
statistics.incorrectDependency++;
|
|
711
|
+
failureCache.set(module, problem); // cache failures for performance
|
|
712
|
+
return problem;
|
|
713
|
+
}
|
|
714
|
+
|
|
610
715
|
// Module must be in the correct chunks
|
|
611
|
-
const missingChunks =
|
|
612
|
-
|
|
613
|
-
|
|
716
|
+
const missingChunks = config.rootChunks.filter(
|
|
717
|
+
(chunk) => !chunkGraph.isModuleInChunk(module, chunk)
|
|
718
|
+
);
|
|
614
719
|
if (missingChunks.length > 0) {
|
|
615
720
|
/**
|
|
721
|
+
* Returns problem description.
|
|
616
722
|
* @param {RequestShortener} requestShortener request shortener
|
|
617
723
|
* @returns {string} problem description
|
|
618
724
|
*/
|
|
@@ -656,6 +762,7 @@ class ModuleConcatenationPlugin {
|
|
|
656
762
|
);
|
|
657
763
|
if (activeNonModulesConnections.length > 0) {
|
|
658
764
|
/**
|
|
765
|
+
* Returns problem description.
|
|
659
766
|
* @param {RequestShortener} requestShortener request shortener
|
|
660
767
|
* @returns {string} problem description
|
|
661
768
|
*/
|
|
@@ -689,11 +796,11 @@ class ModuleConcatenationPlugin {
|
|
|
689
796
|
if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
|
|
690
797
|
|
|
691
798
|
// We don't care for connections from other runtimes
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
799
|
+
const originRuntime = getMergedModuleRuntime(
|
|
800
|
+
chunkGraph,
|
|
801
|
+
moduleRuntimeCache,
|
|
802
|
+
originModule
|
|
803
|
+
);
|
|
697
804
|
|
|
698
805
|
if (!intersectRuntime(runtime, originRuntime)) continue;
|
|
699
806
|
|
|
@@ -711,9 +818,7 @@ class ModuleConcatenationPlugin {
|
|
|
711
818
|
|
|
712
819
|
// Module must be in the same chunks like the referencing module
|
|
713
820
|
const otherChunkModules = incomingModules.filter((originModule) => {
|
|
714
|
-
for (const chunk of
|
|
715
|
-
config.rootModule
|
|
716
|
-
)) {
|
|
821
|
+
for (const chunk of config.rootChunks) {
|
|
717
822
|
if (!chunkGraph.isModuleInChunk(originModule, chunk)) {
|
|
718
823
|
return true;
|
|
719
824
|
}
|
|
@@ -722,6 +827,7 @@ class ModuleConcatenationPlugin {
|
|
|
722
827
|
});
|
|
723
828
|
if (otherChunkModules.length > 0) {
|
|
724
829
|
/**
|
|
830
|
+
* Returns problem description.
|
|
725
831
|
* @param {RequestShortener} requestShortener request shortener
|
|
726
832
|
* @returns {string} problem description
|
|
727
833
|
*/
|
|
@@ -746,7 +852,13 @@ class ModuleConcatenationPlugin {
|
|
|
746
852
|
const selected = connections.filter(
|
|
747
853
|
(connection) =>
|
|
748
854
|
!connection.dependency ||
|
|
749
|
-
!(connection.dependency
|
|
855
|
+
(!Dependency.canConcatenate(connection.dependency) &&
|
|
856
|
+
// exports self-references of a concatenated CommonJS module
|
|
857
|
+
// are rewritten in place, so they don't block concatenation
|
|
858
|
+
!(
|
|
859
|
+
originModule === module &&
|
|
860
|
+
connection.dependency instanceof CommonJsSelfReferenceDependency
|
|
861
|
+
))
|
|
750
862
|
);
|
|
751
863
|
if (selected.length > 0) {
|
|
752
864
|
nonHarmonyConnections.set(originModule, connections);
|
|
@@ -754,6 +866,7 @@ class ModuleConcatenationPlugin {
|
|
|
754
866
|
}
|
|
755
867
|
if (nonHarmonyConnections.size > 0) {
|
|
756
868
|
/**
|
|
869
|
+
* Returns problem description.
|
|
757
870
|
* @param {RequestShortener} requestShortener request shortener
|
|
758
871
|
* @returns {string} problem description
|
|
759
872
|
*/
|
|
@@ -815,6 +928,7 @@ class ModuleConcatenationPlugin {
|
|
|
815
928
|
}
|
|
816
929
|
if (otherRuntimeConnections.length > 0) {
|
|
817
930
|
/**
|
|
931
|
+
* Returns problem description.
|
|
818
932
|
* @param {RequestShortener} requestShortener request shortener
|
|
819
933
|
* @returns {string} problem description
|
|
820
934
|
*/
|
|
@@ -860,6 +974,7 @@ class ModuleConcatenationPlugin {
|
|
|
860
974
|
possibleModules,
|
|
861
975
|
candidates,
|
|
862
976
|
failureCache,
|
|
977
|
+
moduleRuntimeCache,
|
|
863
978
|
chunkGraph,
|
|
864
979
|
false,
|
|
865
980
|
statistics
|
|
@@ -885,14 +1000,18 @@ class ModuleConcatenationPlugin {
|
|
|
885
1000
|
|
|
886
1001
|
class ConcatConfiguration {
|
|
887
1002
|
/**
|
|
1003
|
+
* Creates an instance of ConcatConfiguration.
|
|
888
1004
|
* @param {Module} rootModule the root module
|
|
889
1005
|
* @param {RuntimeSpec} runtime the runtime
|
|
1006
|
+
* @param {Chunk[]} rootChunks the chunks the root module is in
|
|
890
1007
|
*/
|
|
891
|
-
constructor(rootModule, runtime) {
|
|
1008
|
+
constructor(rootModule, runtime, rootChunks) {
|
|
892
1009
|
/** @type {Module} */
|
|
893
1010
|
this.rootModule = rootModule;
|
|
894
1011
|
/** @type {RuntimeSpec} */
|
|
895
1012
|
this.runtime = runtime;
|
|
1013
|
+
/** @type {Chunk[]} the root's chunks, reused for every candidate's chunk check */
|
|
1014
|
+
this.rootChunks = rootChunks;
|
|
896
1015
|
/** @type {Set<Module>} */
|
|
897
1016
|
this.modules = new Set();
|
|
898
1017
|
this.modules.add(rootModule);
|
|
@@ -901,6 +1020,7 @@ class ConcatConfiguration {
|
|
|
901
1020
|
}
|
|
902
1021
|
|
|
903
1022
|
/**
|
|
1023
|
+
* Processes the provided module.
|
|
904
1024
|
* @param {Module} module the module
|
|
905
1025
|
*/
|
|
906
1026
|
add(module) {
|
|
@@ -908,6 +1028,7 @@ class ConcatConfiguration {
|
|
|
908
1028
|
}
|
|
909
1029
|
|
|
910
1030
|
/**
|
|
1031
|
+
* Returns true, when the module is in the module set.
|
|
911
1032
|
* @param {Module} module the module
|
|
912
1033
|
* @returns {boolean} true, when the module is in the module set
|
|
913
1034
|
*/
|
|
@@ -920,6 +1041,7 @@ class ConcatConfiguration {
|
|
|
920
1041
|
}
|
|
921
1042
|
|
|
922
1043
|
/**
|
|
1044
|
+
* Adds the provided module to the concat configuration.
|
|
923
1045
|
* @param {Module} module the module
|
|
924
1046
|
* @param {Problem} problem the problem
|
|
925
1047
|
*/
|
|
@@ -928,6 +1050,7 @@ class ConcatConfiguration {
|
|
|
928
1050
|
}
|
|
929
1051
|
|
|
930
1052
|
/**
|
|
1053
|
+
* Gets warnings sorted.
|
|
931
1054
|
* @returns {Warnings} warnings
|
|
932
1055
|
*/
|
|
933
1056
|
getWarningsSorted() {
|
|
@@ -943,6 +1066,7 @@ class ConcatConfiguration {
|
|
|
943
1066
|
}
|
|
944
1067
|
|
|
945
1068
|
/**
|
|
1069
|
+
* Returns modules as set.
|
|
946
1070
|
* @returns {Set<Module>} modules as set
|
|
947
1071
|
*/
|
|
948
1072
|
getModules() {
|
|
@@ -954,6 +1078,7 @@ class ConcatConfiguration {
|
|
|
954
1078
|
}
|
|
955
1079
|
|
|
956
1080
|
/**
|
|
1081
|
+
* Processes the provided snapshot.
|
|
957
1082
|
* @param {number} snapshot snapshot
|
|
958
1083
|
*/
|
|
959
1084
|
rollback(snapshot) {
|