webpack 5.106.1 → 5.107.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 +2 -2
- package/lib/APIPlugin.js +4 -2
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +26 -0
- package/lib/Chunk.js +46 -0
- package/lib/ChunkGraph.js +111 -0
- package/lib/ChunkGroup.js +57 -13
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CleanPlugin.js +14 -1
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +23 -8
- package/lib/Compilation.js +161 -27
- package/lib/Compiler.js +41 -17
- package/lib/ConcatenationScope.js +24 -1
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +4 -1
- package/lib/ContextExclusionPlugin.js +2 -1
- package/lib/ContextModule.js +14 -2
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/DefinePlugin.js +22 -9
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +48 -4
- 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 +3 -0
- package/lib/EntryPlugin.js +2 -1
- package/lib/Entrypoint.js +4 -0
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -10
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +114 -15
- package/lib/ExternalModuleFactoryPlugin.js +15 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +291 -71
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
- package/lib/FlagDependencyExportsPlugin.js +4 -1
- package/lib/FlagDependencyUsagePlugin.js +5 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
- package/lib/Generator.js +16 -3
- package/lib/HotModuleReplacementPlugin.js +35 -9
- package/lib/IgnorePlugin.js +4 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +2 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +101 -19
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +3 -0
- package/lib/ModuleGraph.js +66 -0
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleSourceTypeConstants.js +32 -1
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleTypeConstants.js +12 -3
- package/lib/MultiCompiler.js +30 -2
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +11 -2
- package/lib/NormalModule.js +43 -33
- package/lib/NormalModuleFactory.js +35 -2
- package/lib/NormalModuleReplacementPlugin.js +1 -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 +2 -1
- package/lib/ProgressPlugin.js +158 -68
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +12 -0
- package/lib/RecordIdsPlugin.js +8 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +6 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +13 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +3 -1
- package/lib/Stats.js +5 -0
- package/lib/Template.js +20 -0
- package/lib/TemplatedPathPlugin.js +10 -3
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
- package/lib/WarnDeprecatedOptionPlugin.js +2 -2
- package/lib/WarnNoModeSetPlugin.js +17 -2
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +16 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +3 -1
- package/lib/WebpackOptionsApply.js +14 -1
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +12 -2
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +42 -10
- package/lib/asset/AssetModulesPlugin.js +7 -2
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +12 -2
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +11 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +19 -6
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
- package/lib/cache/AddManagedPathsPlugin.js +2 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
- package/lib/cache/PackFileCacheStrategy.js +33 -4
- package/lib/cache/ResolverCachePlugin.js +10 -1
- package/lib/cache/getLazyHashedEtag.js +4 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +33 -1
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +232 -12
- package/lib/config/normalization.js +15 -1
- package/lib/config/target.js +11 -0
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +12 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +4 -0
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +2 -1
- package/lib/container/FallbackDependency.js +4 -0
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +12 -0
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +3 -1
- package/lib/container/RemoteModule.js +13 -0
- package/lib/container/RemoteRuntimeModule.js +1 -0
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +336 -100
- package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
- package/lib/css/CssLoadingRuntimeModule.js +23 -4
- package/lib/{CssModule.js → css/CssModule.js} +21 -15
- package/lib/css/CssModulesPlugin.js +235 -89
- package/lib/css/CssParser.js +616 -261
- package/lib/css/walkCssTokens.js +179 -2
- package/lib/debug/ProfilingPlugin.js +19 -1
- package/lib/dependencies/AMDDefineDependency.js +7 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
- package/lib/dependencies/AMDPlugin.js +4 -1
- package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
- package/lib/dependencies/AMDRequireContextDependency.js +3 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
- package/lib/dependencies/AMDRequireDependency.js +4 -0
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +6 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
- package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
- package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +70 -4
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +9 -2
- package/lib/dependencies/ContextDependencyHelpers.js +4 -1
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +4 -0
- package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +2 -1
- package/lib/dependencies/CssIcssExportDependency.js +339 -66
- package/lib/dependencies/CssIcssImportDependency.js +53 -8
- package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
- package/lib/dependencies/CssImportDependency.js +12 -0
- package/lib/dependencies/CssUrlDependency.js +32 -0
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +3 -0
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/ExternalModuleDependency.js +5 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
- package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
- package/lib/dependencies/HarmonyExports.js +2 -0
- package/lib/dependencies/HarmonyImportDependency.js +21 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
- package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
- package/lib/dependencies/HtmlSourceDependency.js +127 -0
- package/lib/dependencies/ImportContextDependency.js +4 -0
- package/lib/dependencies/ImportDependency.js +5 -0
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +9 -2
- package/lib/dependencies/ImportPhase.js +7 -3
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +2 -0
- package/lib/dependencies/JsonExportsDependency.js +6 -1
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +2 -0
- package/lib/dependencies/LoaderPlugin.js +4 -1
- package/lib/dependencies/LocalModule.js +4 -0
- package/lib/dependencies/LocalModuleDependency.js +4 -0
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +6 -1
- package/lib/dependencies/PureExpressionDependency.js +7 -1
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/RequireEnsureDependency.js +4 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +3 -0
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
- package/lib/dependencies/StaticExportsDependency.js +3 -0
- package/lib/dependencies/SystemPlugin.js +5 -2
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/URLContextDependency.js +3 -0
- package/lib/dependencies/URLDependency.js +6 -0
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +11 -3
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
- package/lib/{DllModule.js → dll/DllModule.js} +35 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- 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} +4 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
- package/lib/errors/JSONParseError.js +114 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
- package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
- package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
- package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
- package/lib/errors/NonErrorEmittedError.js +28 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -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 +5 -1
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +20 -1
- package/lib/hmr/lazyCompilationBackend.js +2 -0
- package/lib/html/HtmlGenerator.js +379 -0
- package/lib/html/HtmlModulesPlugin.js +433 -0
- package/lib/html/HtmlParser.js +1489 -0
- package/lib/html/walkHtmlTokens.js +2733 -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 +22 -1
- 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 +39 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
- package/lib/javascript/BasicEvaluatedExpression.js +4 -2
- 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 +5 -1
- package/lib/javascript/JavascriptGenerator.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +112 -9
- package/lib/javascript/JavascriptParser.js +360 -16
- package/lib/javascript/JavascriptParserHelpers.js +7 -1
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +14 -25
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +86 -1
- package/lib/library/SystemLibraryPlugin.js +8 -0
- package/lib/library/UmdLibraryPlugin.js +16 -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 +2 -1
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +2 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -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 +62 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +16 -1
- package/lib/optimize/InnerGraphPlugin.js +14 -2
- 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 +36 -8
- package/lib/optimize/RealContentHashPlugin.js +104 -26
- 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 +118 -4
- package/lib/optimize/SplitChunksPlugin.js +50 -2
- 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 +6 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -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 +18 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +7 -2
- package/lib/serialization/AggregateErrorSerializer.js +2 -0
- package/lib/serialization/ArraySerializer.js +2 -0
- package/lib/serialization/BinaryMiddleware.js +20 -1
- package/lib/serialization/DateObjectSerializer.js +2 -0
- package/lib/serialization/ErrorObjectSerializer.js +3 -0
- package/lib/serialization/FileMiddleware.js +21 -0
- package/lib/serialization/MapObjectSerializer.js +2 -0
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +7 -0
- package/lib/serialization/RegExpObjectSerializer.js +2 -0
- package/lib/serialization/Serializer.js +5 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +2 -0
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +15 -0
- package/lib/sharing/ConsumeSharedPlugin.js +8 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +12 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +5 -2
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +4 -1
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
- package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
- package/lib/stats/StatsFactory.js +13 -1
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +8 -2
- package/lib/util/AppendOnlyStackedSet.js +15 -0
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +22 -2
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -0
- package/lib/util/LocConverter.js +53 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +14 -1
- package/lib/util/SetHelpers.js +3 -0
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +45 -0
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +13 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +33 -0
- package/lib/util/binarySearchBounds.js +1 -0
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +34 -3
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +9 -3
- package/lib/util/conventions.js +46 -1
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +1 -0
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +20 -0
- package/lib/util/extractSourceMap.js +1 -0
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +5 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
- package/lib/util/fs.js +71 -8
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/hash-digest.js +8 -0
- 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 +67 -0
- package/lib/util/internalSerializables.js +35 -19
- package/lib/util/magicComment.js +10 -6
- package/lib/util/makeSerializable.js +6 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +1 -0
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +1 -0
- package/lib/util/registerExternalSerializer.js +20 -0
- 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 +1 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
- package/lib/wasm-sync/WebAssemblyParser.js +2 -0
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
- package/lib/web/FetchCompileWasmPlugin.js +13 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +13 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +31 -31
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +161 -57
- 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/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +22 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +5325 -353
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- /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,11 @@
|
|
|
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");
|
|
13
|
-
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
14
15
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
|
15
16
|
const {
|
|
16
17
|
filterRuntime,
|
|
@@ -23,7 +24,6 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
23
24
|
|
|
24
25
|
/** @typedef {import("../Compilation")} Compilation */
|
|
25
26
|
/** @typedef {import("../Compiler")} Compiler */
|
|
26
|
-
/** @typedef {import("../Module")} Module */
|
|
27
27
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
28
28
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
29
29
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
@@ -31,6 +31,7 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
31
31
|
/** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
+
* Defines the statistics type used by this module.
|
|
34
35
|
* @typedef {object} Statistics
|
|
35
36
|
* @property {number} cached
|
|
36
37
|
* @property {number} alreadyInConfig
|
|
@@ -45,6 +46,7 @@ const ConcatenatedModule = require("./ConcatenatedModule");
|
|
|
45
46
|
*/
|
|
46
47
|
|
|
47
48
|
/**
|
|
49
|
+
* Format bailout reason.
|
|
48
50
|
* @param {string} msg message
|
|
49
51
|
* @returns {string} formatted message
|
|
50
52
|
*/
|
|
@@ -54,7 +56,7 @@ const PLUGIN_NAME = "ModuleConcatenationPlugin";
|
|
|
54
56
|
|
|
55
57
|
class ModuleConcatenationPlugin {
|
|
56
58
|
/**
|
|
57
|
-
*
|
|
59
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
58
60
|
* @param {Compiler} compiler the compiler instance
|
|
59
61
|
* @returns {void}
|
|
60
62
|
*/
|
|
@@ -71,6 +73,7 @@ class ModuleConcatenationPlugin {
|
|
|
71
73
|
const bailoutReasonMap = new Map();
|
|
72
74
|
|
|
73
75
|
/**
|
|
76
|
+
* Sets bailout reason.
|
|
74
77
|
* @param {Module} module the module
|
|
75
78
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
76
79
|
*/
|
|
@@ -86,6 +89,7 @@ class ModuleConcatenationPlugin {
|
|
|
86
89
|
};
|
|
87
90
|
|
|
88
91
|
/**
|
|
92
|
+
* Sets inner bailout reason.
|
|
89
93
|
* @param {Module} module the module
|
|
90
94
|
* @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
|
|
91
95
|
*/
|
|
@@ -94,6 +98,7 @@ class ModuleConcatenationPlugin {
|
|
|
94
98
|
};
|
|
95
99
|
|
|
96
100
|
/**
|
|
101
|
+
* Gets inner bailout reason.
|
|
97
102
|
* @param {Module} module the module
|
|
98
103
|
* @param {RequestShortener} requestShortener the request shortener
|
|
99
104
|
* @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
|
|
@@ -105,6 +110,7 @@ class ModuleConcatenationPlugin {
|
|
|
105
110
|
};
|
|
106
111
|
|
|
107
112
|
/**
|
|
113
|
+
* Format bailout warning.
|
|
108
114
|
* @param {Module} module the module
|
|
109
115
|
* @param {Problem} problem the problem
|
|
110
116
|
* @returns {(requestShortener: RequestShortener) => string} the reason
|
|
@@ -222,6 +228,12 @@ class ModuleConcatenationPlugin {
|
|
|
222
228
|
canBeRoot = false;
|
|
223
229
|
}
|
|
224
230
|
|
|
231
|
+
// TODO: ConcatenatedModule.getSourceTypes only javascript now
|
|
232
|
+
const basicTypes = Module.getSourceBasicTypes(module);
|
|
233
|
+
if (basicTypes.size !== 1 || !basicTypes.has(JAVASCRIPT_TYPE)) {
|
|
234
|
+
canBeRoot = false;
|
|
235
|
+
}
|
|
236
|
+
|
|
225
237
|
// Module must not be an entry point
|
|
226
238
|
if (chunkGraph.isEntryModule(module)) {
|
|
227
239
|
setInnerBailoutReason(module, "Module is an entry point");
|
|
@@ -454,7 +466,8 @@ class ModuleConcatenationPlugin {
|
|
|
454
466
|
(c) =>
|
|
455
467
|
c.originModule === m &&
|
|
456
468
|
!(
|
|
457
|
-
c.dependency
|
|
469
|
+
c.dependency &&
|
|
470
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
458
471
|
modules.has(c.module)
|
|
459
472
|
)
|
|
460
473
|
);
|
|
@@ -497,7 +510,8 @@ class ModuleConcatenationPlugin {
|
|
|
497
510
|
const otherModule =
|
|
498
511
|
c.module === rootModule ? c.originModule : c.module;
|
|
499
512
|
const innerConnection =
|
|
500
|
-
c.dependency
|
|
513
|
+
c.dependency &&
|
|
514
|
+
Dependency.canConcatenate(c.dependency) &&
|
|
501
515
|
modules.has(/** @type {Module} */ (otherModule));
|
|
502
516
|
return !innerConnection;
|
|
503
517
|
}
|
|
@@ -521,6 +535,7 @@ class ModuleConcatenationPlugin {
|
|
|
521
535
|
}
|
|
522
536
|
|
|
523
537
|
/**
|
|
538
|
+
* Returns the imported modules.
|
|
524
539
|
* @param {Compilation} compilation the compilation
|
|
525
540
|
* @param {Module} module the module to be added
|
|
526
541
|
* @param {RuntimeSpec} runtime the runtime scope
|
|
@@ -531,8 +546,8 @@ class ModuleConcatenationPlugin {
|
|
|
531
546
|
/** @type {Set<Module>} */
|
|
532
547
|
const set = new Set();
|
|
533
548
|
for (const dep of module.dependencies) {
|
|
534
|
-
// Get reference info only for
|
|
535
|
-
if (!(dep
|
|
549
|
+
// Get reference info only for dependencies that support concatenation
|
|
550
|
+
if (!Dependency.canConcatenate(dep)) continue;
|
|
536
551
|
|
|
537
552
|
const connection = moduleGraph.getConnection(dep);
|
|
538
553
|
// Reference is valid and has a module
|
|
@@ -562,6 +577,7 @@ class ModuleConcatenationPlugin {
|
|
|
562
577
|
}
|
|
563
578
|
|
|
564
579
|
/**
|
|
580
|
+
* Returns the problematic module.
|
|
565
581
|
* @param {Compilation} compilation webpack compilation
|
|
566
582
|
* @param {ConcatConfiguration} config concat configuration (will be modified when added)
|
|
567
583
|
* @param {Module} module the module to be added
|
|
@@ -613,6 +629,7 @@ class ModuleConcatenationPlugin {
|
|
|
613
629
|
].filter((chunk) => !chunkGraph.isModuleInChunk(module, chunk));
|
|
614
630
|
if (missingChunks.length > 0) {
|
|
615
631
|
/**
|
|
632
|
+
* Returns problem description.
|
|
616
633
|
* @param {RequestShortener} requestShortener request shortener
|
|
617
634
|
* @returns {string} problem description
|
|
618
635
|
*/
|
|
@@ -656,6 +673,7 @@ class ModuleConcatenationPlugin {
|
|
|
656
673
|
);
|
|
657
674
|
if (activeNonModulesConnections.length > 0) {
|
|
658
675
|
/**
|
|
676
|
+
* Returns problem description.
|
|
659
677
|
* @param {RequestShortener} requestShortener request shortener
|
|
660
678
|
* @returns {string} problem description
|
|
661
679
|
*/
|
|
@@ -722,6 +740,7 @@ class ModuleConcatenationPlugin {
|
|
|
722
740
|
});
|
|
723
741
|
if (otherChunkModules.length > 0) {
|
|
724
742
|
/**
|
|
743
|
+
* Returns problem description.
|
|
725
744
|
* @param {RequestShortener} requestShortener request shortener
|
|
726
745
|
* @returns {string} problem description
|
|
727
746
|
*/
|
|
@@ -746,7 +765,7 @@ class ModuleConcatenationPlugin {
|
|
|
746
765
|
const selected = connections.filter(
|
|
747
766
|
(connection) =>
|
|
748
767
|
!connection.dependency ||
|
|
749
|
-
!(connection.dependency
|
|
768
|
+
!Dependency.canConcatenate(connection.dependency)
|
|
750
769
|
);
|
|
751
770
|
if (selected.length > 0) {
|
|
752
771
|
nonHarmonyConnections.set(originModule, connections);
|
|
@@ -754,6 +773,7 @@ class ModuleConcatenationPlugin {
|
|
|
754
773
|
}
|
|
755
774
|
if (nonHarmonyConnections.size > 0) {
|
|
756
775
|
/**
|
|
776
|
+
* Returns problem description.
|
|
757
777
|
* @param {RequestShortener} requestShortener request shortener
|
|
758
778
|
* @returns {string} problem description
|
|
759
779
|
*/
|
|
@@ -815,6 +835,7 @@ class ModuleConcatenationPlugin {
|
|
|
815
835
|
}
|
|
816
836
|
if (otherRuntimeConnections.length > 0) {
|
|
817
837
|
/**
|
|
838
|
+
* Returns problem description.
|
|
818
839
|
* @param {RequestShortener} requestShortener request shortener
|
|
819
840
|
* @returns {string} problem description
|
|
820
841
|
*/
|
|
@@ -885,6 +906,7 @@ class ModuleConcatenationPlugin {
|
|
|
885
906
|
|
|
886
907
|
class ConcatConfiguration {
|
|
887
908
|
/**
|
|
909
|
+
* Creates an instance of ConcatConfiguration.
|
|
888
910
|
* @param {Module} rootModule the root module
|
|
889
911
|
* @param {RuntimeSpec} runtime the runtime
|
|
890
912
|
*/
|
|
@@ -901,6 +923,7 @@ class ConcatConfiguration {
|
|
|
901
923
|
}
|
|
902
924
|
|
|
903
925
|
/**
|
|
926
|
+
* Processes the provided module.
|
|
904
927
|
* @param {Module} module the module
|
|
905
928
|
*/
|
|
906
929
|
add(module) {
|
|
@@ -908,6 +931,7 @@ class ConcatConfiguration {
|
|
|
908
931
|
}
|
|
909
932
|
|
|
910
933
|
/**
|
|
934
|
+
* Returns true, when the module is in the module set.
|
|
911
935
|
* @param {Module} module the module
|
|
912
936
|
* @returns {boolean} true, when the module is in the module set
|
|
913
937
|
*/
|
|
@@ -920,6 +944,7 @@ class ConcatConfiguration {
|
|
|
920
944
|
}
|
|
921
945
|
|
|
922
946
|
/**
|
|
947
|
+
* Adds the provided module to the concat configuration.
|
|
923
948
|
* @param {Module} module the module
|
|
924
949
|
* @param {Problem} problem the problem
|
|
925
950
|
*/
|
|
@@ -928,6 +953,7 @@ class ConcatConfiguration {
|
|
|
928
953
|
}
|
|
929
954
|
|
|
930
955
|
/**
|
|
956
|
+
* Gets warnings sorted.
|
|
931
957
|
* @returns {Warnings} warnings
|
|
932
958
|
*/
|
|
933
959
|
getWarningsSorted() {
|
|
@@ -943,6 +969,7 @@ class ConcatConfiguration {
|
|
|
943
969
|
}
|
|
944
970
|
|
|
945
971
|
/**
|
|
972
|
+
* Returns modules as set.
|
|
946
973
|
* @returns {Set<Module>} modules as set
|
|
947
974
|
*/
|
|
948
975
|
getModules() {
|
|
@@ -954,6 +981,7 @@ class ConcatConfiguration {
|
|
|
954
981
|
}
|
|
955
982
|
|
|
956
983
|
/**
|
|
984
|
+
* Processes the provided snapshot.
|
|
957
985
|
* @param {number} snapshot snapshot
|
|
958
986
|
*/
|
|
959
987
|
rollback(snapshot) {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const { SyncBailHook } = require("tapable");
|
|
9
9
|
const { CachedSource, CompatSource, RawSource } = require("webpack-sources");
|
|
10
10
|
const Compilation = require("../Compilation");
|
|
11
|
-
const WebpackError = require("../WebpackError");
|
|
11
|
+
const WebpackError = require("../errors/WebpackError");
|
|
12
12
|
const { compareSelect, compareStrings } = require("../util/comparators");
|
|
13
13
|
const createHash = require("../util/createHash");
|
|
14
14
|
|
|
@@ -21,6 +21,7 @@ const createHash = require("../util/createHash");
|
|
|
21
21
|
/** @typedef {typeof import("../util/Hash")} Hash */
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
+
* Defines the comparator type used by this module.
|
|
24
25
|
* @template T
|
|
25
26
|
* @typedef {import("../util/comparators").Comparator<T>} Comparator
|
|
26
27
|
*/
|
|
@@ -29,6 +30,7 @@ const createHash = require("../util/createHash");
|
|
|
29
30
|
const EMPTY_SET = new Set();
|
|
30
31
|
|
|
31
32
|
/**
|
|
33
|
+
* Adds the provided item or item to this object.
|
|
32
34
|
* @template T
|
|
33
35
|
* @param {T | T[]} itemOrItems item or items
|
|
34
36
|
* @param {Set<T>} list list
|
|
@@ -44,23 +46,77 @@ const addToList = (itemOrItems, list) => {
|
|
|
44
46
|
};
|
|
45
47
|
|
|
46
48
|
/**
|
|
49
|
+
* Compares two non-empty buffer chunk arrays for byte-equality without
|
|
50
|
+
* allocating a concatenated buffer.
|
|
51
|
+
* @param {Buffer[]} a first chunk array
|
|
52
|
+
* @param {Buffer[]} b second chunk array
|
|
53
|
+
* @returns {boolean} true if the concatenations are byte-equal
|
|
54
|
+
*/
|
|
55
|
+
const bufferArraysEqual = (a, b) => {
|
|
56
|
+
let aIdx = 0;
|
|
57
|
+
let aOff = 0;
|
|
58
|
+
let bIdx = 0;
|
|
59
|
+
let bOff = 0;
|
|
60
|
+
while (aIdx < a.length && bIdx < b.length) {
|
|
61
|
+
const aBuf = a[aIdx];
|
|
62
|
+
const bBuf = b[bIdx];
|
|
63
|
+
const len = Math.min(aBuf.length - aOff, bBuf.length - bOff);
|
|
64
|
+
if (aBuf.compare(bBuf, bOff, bOff + len, aOff, aOff + len) !== 0) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
aOff += len;
|
|
68
|
+
bOff += len;
|
|
69
|
+
if (aOff === aBuf.length) {
|
|
70
|
+
aIdx++;
|
|
71
|
+
aOff = 0;
|
|
72
|
+
}
|
|
73
|
+
if (bOff === bBuf.length) {
|
|
74
|
+
bIdx++;
|
|
75
|
+
bOff = 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return aIdx === a.length && bIdx === b.length;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Map sources to their buffer chunks and deduplicate by total byte content,
|
|
83
|
+
* grouping by total length first to avoid full comparisons.
|
|
47
84
|
* @template T
|
|
48
85
|
* @param {T[]} input list
|
|
49
|
-
* @param {(item: T) =>
|
|
50
|
-
* @returns {Buffer[]}
|
|
86
|
+
* @param {(item: T) => Source} fn map function returning a Source
|
|
87
|
+
* @returns {Buffer[][]} unique chunk arrays
|
|
51
88
|
*/
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
/** @type {Buffer[]} */
|
|
89
|
+
const mapAndDeduplicateSourceBuffers = (input, fn) => {
|
|
90
|
+
/** @type {Map<number, Buffer[][]>} */
|
|
91
|
+
const bySize = new Map();
|
|
92
|
+
/** @type {Buffer[][]} */
|
|
57
93
|
const result = [];
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
94
|
+
for (const value of input) {
|
|
95
|
+
const source = fn(value);
|
|
96
|
+
// TODO webpack 6: drop the `buffers` check, require webpack-sources >= 3.4
|
|
97
|
+
// and call `source.buffers()` unconditionally.
|
|
98
|
+
const chunks =
|
|
99
|
+
// TODO remove in webpack 6, this is protection against authors who directly use `webpack-sources` outdated version
|
|
100
|
+
typeof source.buffers === "function"
|
|
101
|
+
? source.buffers()
|
|
102
|
+
: [source.buffer()];
|
|
103
|
+
let total = 0;
|
|
104
|
+
for (const c of chunks) total += c.length;
|
|
105
|
+
const sameSize = bySize.get(total);
|
|
106
|
+
if (sameSize) {
|
|
107
|
+
let duplicate = false;
|
|
108
|
+
for (const other of sameSize) {
|
|
109
|
+
if (bufferArraysEqual(chunks, other)) {
|
|
110
|
+
duplicate = true;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (duplicate) continue;
|
|
115
|
+
sameSize.push(chunks);
|
|
116
|
+
} else {
|
|
117
|
+
bySize.set(total, [chunks]);
|
|
62
118
|
}
|
|
63
|
-
result.push(
|
|
119
|
+
result.push(chunks);
|
|
64
120
|
}
|
|
65
121
|
return result;
|
|
66
122
|
};
|
|
@@ -76,6 +132,7 @@ const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
|
|
76
132
|
const cachedSourceMap = new WeakMap();
|
|
77
133
|
|
|
78
134
|
/**
|
|
135
|
+
* Returns cached source.
|
|
79
136
|
* @param {Source} source source
|
|
80
137
|
* @returns {CachedSource} cached source
|
|
81
138
|
*/
|
|
@@ -93,6 +150,7 @@ const toCachedSource = (source) => {
|
|
|
93
150
|
/** @typedef {Set<string>} Hashes */
|
|
94
151
|
|
|
95
152
|
/**
|
|
153
|
+
* Defines the asset info for real content hash type used by this module.
|
|
96
154
|
* @typedef {object} AssetInfoForRealContentHash
|
|
97
155
|
* @property {string} name
|
|
98
156
|
* @property {AssetInfo} info
|
|
@@ -108,6 +166,7 @@ const toCachedSource = (source) => {
|
|
|
108
166
|
*/
|
|
109
167
|
|
|
110
168
|
/**
|
|
169
|
+
* Defines the compilation hooks type used by this module.
|
|
111
170
|
* @typedef {object} CompilationHooks
|
|
112
171
|
* @property {SyncBailHook<[Buffer[], string], string | void>} updateHash
|
|
113
172
|
*/
|
|
@@ -116,6 +175,7 @@ const toCachedSource = (source) => {
|
|
|
116
175
|
const compilationHooksMap = new WeakMap();
|
|
117
176
|
|
|
118
177
|
/**
|
|
178
|
+
* Defines the real content hash plugin options type used by this module.
|
|
119
179
|
* @typedef {object} RealContentHashPluginOptions
|
|
120
180
|
* @property {HashFunction} hashFunction the hash function to use
|
|
121
181
|
* @property {HashDigest} hashDigest the hash digest to use
|
|
@@ -125,6 +185,7 @@ const PLUGIN_NAME = "RealContentHashPlugin";
|
|
|
125
185
|
|
|
126
186
|
class RealContentHashPlugin {
|
|
127
187
|
/**
|
|
188
|
+
* Returns the attached hooks.
|
|
128
189
|
* @param {Compilation} compilation the compilation
|
|
129
190
|
* @returns {CompilationHooks} the attached hooks
|
|
130
191
|
*/
|
|
@@ -145,6 +206,7 @@ class RealContentHashPlugin {
|
|
|
145
206
|
}
|
|
146
207
|
|
|
147
208
|
/**
|
|
209
|
+
* Creates an instance of RealContentHashPlugin.
|
|
148
210
|
* @param {RealContentHashPluginOptions} options options
|
|
149
211
|
*/
|
|
150
212
|
constructor({ hashFunction, hashDigest }) {
|
|
@@ -155,7 +217,7 @@ class RealContentHashPlugin {
|
|
|
155
217
|
}
|
|
156
218
|
|
|
157
219
|
/**
|
|
158
|
-
*
|
|
220
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
159
221
|
* @param {Compiler} compiler the compiler instance
|
|
160
222
|
* @returns {void}
|
|
161
223
|
*/
|
|
@@ -247,6 +309,7 @@ class RealContentHashPlugin {
|
|
|
247
309
|
})
|
|
248
310
|
);
|
|
249
311
|
/**
|
|
312
|
+
* Returns the referenced hashes.
|
|
250
313
|
* @param {string} hash the hash
|
|
251
314
|
* @returns {undefined | Hashes} the referenced hashes
|
|
252
315
|
*/
|
|
@@ -287,6 +350,7 @@ ${referencingAssets
|
|
|
287
350
|
return hashes;
|
|
288
351
|
};
|
|
289
352
|
/**
|
|
353
|
+
* Returns the hash info.
|
|
290
354
|
* @param {string} hash the hash
|
|
291
355
|
* @returns {string} the hash info
|
|
292
356
|
*/
|
|
@@ -301,6 +365,7 @@ ${referencingAssets
|
|
|
301
365
|
const hashesInOrder = new Set();
|
|
302
366
|
for (const hash of hashToAssets.keys()) {
|
|
303
367
|
/**
|
|
368
|
+
* Processes the provided hash.
|
|
304
369
|
* @param {string} hash the hash
|
|
305
370
|
* @param {Set<string>} stack stack of hashes
|
|
306
371
|
*/
|
|
@@ -329,6 +394,7 @@ ${referencingAssets
|
|
|
329
394
|
/** @type {Map<string, string>} */
|
|
330
395
|
const hashToNewHash = new Map();
|
|
331
396
|
/**
|
|
397
|
+
* Returns etag.
|
|
332
398
|
* @param {AssetInfoForRealContentHash} asset asset info
|
|
333
399
|
* @returns {Etag} etag
|
|
334
400
|
*/
|
|
@@ -341,6 +407,7 @@ ${referencingAssets
|
|
|
341
407
|
).join("|")
|
|
342
408
|
);
|
|
343
409
|
/**
|
|
410
|
+
* Compute new content.
|
|
344
411
|
* @param {AssetInfoForRealContentHash} asset asset info
|
|
345
412
|
* @returns {Promise<void>}
|
|
346
413
|
*/
|
|
@@ -370,6 +437,7 @@ ${referencingAssets
|
|
|
370
437
|
})());
|
|
371
438
|
};
|
|
372
439
|
/**
|
|
440
|
+
* Compute new content without own.
|
|
373
441
|
* @param {AssetInfoForRealContentHash} asset asset info
|
|
374
442
|
* @returns {Promise<void>}
|
|
375
443
|
*/
|
|
@@ -422,24 +490,34 @@ ${referencingAssets
|
|
|
422
490
|
: computeNewContent(asset)
|
|
423
491
|
)
|
|
424
492
|
);
|
|
425
|
-
const
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
493
|
+
const uniqueChunkArrays = mapAndDeduplicateSourceBuffers(
|
|
494
|
+
assets,
|
|
495
|
+
(asset) => {
|
|
496
|
+
if (/** @type {Hashes} */ (asset.ownHashes).has(oldHash)) {
|
|
497
|
+
return asset.newSourceWithoutOwn || asset.source;
|
|
498
|
+
}
|
|
499
|
+
return asset.newSource || asset.source;
|
|
430
500
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
501
|
+
);
|
|
502
|
+
/** @type {string | undefined} */
|
|
503
|
+
let newHash;
|
|
504
|
+
// Only materialize the public `Buffer[]` (one entry per unique
|
|
505
|
+
// asset) when something is tapped; otherwise the hot path feeds
|
|
506
|
+
// chunks into the hash directly, avoiding per-asset Buffer.concat.
|
|
507
|
+
if (hooks.updateHash.isUsed()) {
|
|
508
|
+
const assetsContent = uniqueChunkArrays.map((chunks) =>
|
|
509
|
+
chunks.length === 1 ? chunks[0] : Buffer.concat(chunks)
|
|
510
|
+
);
|
|
511
|
+
newHash =
|
|
512
|
+
hooks.updateHash.call(assetsContent, oldHash) || undefined;
|
|
513
|
+
}
|
|
436
514
|
if (!newHash) {
|
|
437
515
|
const hash = createHash(this._hashFunction);
|
|
438
516
|
if (compilation.outputOptions.hashSalt) {
|
|
439
517
|
hash.update(compilation.outputOptions.hashSalt);
|
|
440
518
|
}
|
|
441
|
-
for (const
|
|
442
|
-
hash.update(
|
|
519
|
+
for (const chunks of uniqueChunkArrays) {
|
|
520
|
+
for (const c of chunks) hash.update(c);
|
|
443
521
|
}
|
|
444
522
|
const digest = hash.digest(this._hashDigest);
|
|
445
523
|
newHash = digest.slice(0, oldHash.length);
|
|
@@ -14,13 +14,14 @@ const PLUGIN_NAME = "RemoveEmptyChunksPlugin";
|
|
|
14
14
|
|
|
15
15
|
class RemoveEmptyChunksPlugin {
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
18
18
|
* @param {Compiler} compiler the compiler instance
|
|
19
19
|
* @returns {void}
|
|
20
20
|
*/
|
|
21
21
|
apply(compiler) {
|
|
22
22
|
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
23
23
|
/**
|
|
24
|
+
* Handles the hook callback for this code path.
|
|
24
25
|
* @param {Iterable<Chunk>} chunks the chunks array
|
|
25
26
|
* @returns {void}
|
|
26
27
|
*/
|
|
@@ -63,12 +63,14 @@ const PLUGIN_NAME = "RemoveParentModulesPlugin";
|
|
|
63
63
|
|
|
64
64
|
class RemoveParentModulesPlugin {
|
|
65
65
|
/**
|
|
66
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
66
67
|
* @param {Compiler} compiler the compiler
|
|
67
68
|
* @returns {void}
|
|
68
69
|
*/
|
|
69
70
|
apply(compiler) {
|
|
70
71
|
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
71
72
|
/**
|
|
73
|
+
* Handles the hook callback for this code path.
|
|
72
74
|
* @param {Iterable<Chunk>} chunks the chunks
|
|
73
75
|
* @param {ChunkGroup[]} chunkGroups the chunk groups
|
|
74
76
|
*/
|
|
@@ -86,7 +88,7 @@ class RemoveParentModulesPlugin {
|
|
|
86
88
|
const ordinalModules = [];
|
|
87
89
|
|
|
88
90
|
/**
|
|
89
|
-
* Gets or
|
|
91
|
+
* Gets or create module mask.
|
|
90
92
|
* @param {Module} mod the module to get the mask for
|
|
91
93
|
* @returns {bigint} the module mask to uniquely identify the module
|
|
92
94
|
*/
|
|
@@ -14,6 +14,7 @@ const PLUGIN_NAME = "RuntimeChunkPlugin";
|
|
|
14
14
|
|
|
15
15
|
class RuntimeChunkPlugin {
|
|
16
16
|
/**
|
|
17
|
+
* Creates an instance of RuntimeChunkPlugin.
|
|
17
18
|
* @param {{ name?: RuntimeChunkFunction }=} options options
|
|
18
19
|
*/
|
|
19
20
|
constructor(options = {}) {
|
|
@@ -25,7 +26,7 @@ class RuntimeChunkPlugin {
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
|
-
*
|
|
29
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
29
30
|
* @param {Compiler} compiler the compiler instance
|
|
30
31
|
* @returns {void}
|
|
31
32
|
*/
|