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
|
@@ -33,6 +33,7 @@ register(
|
|
|
33
33
|
"webpack-sources/CachedSource",
|
|
34
34
|
new (class CachedSourceSerializer {
|
|
35
35
|
/**
|
|
36
|
+
* Serializes this instance into the provided serializer context.
|
|
36
37
|
* @param {CachedSource} source the cached source to be serialized
|
|
37
38
|
* @param {ObjectSerializerContext} context context
|
|
38
39
|
* @returns {void}
|
|
@@ -47,6 +48,7 @@ register(
|
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
/**
|
|
51
|
+
* Restores this instance from the provided deserializer context.
|
|
50
52
|
* @param {ObjectDeserializerContext} context context
|
|
51
53
|
* @returns {CachedSource} cached source
|
|
52
54
|
*/
|
|
@@ -64,6 +66,7 @@ register(
|
|
|
64
66
|
"webpack-sources/RawSource",
|
|
65
67
|
new (class RawSourceSerializer {
|
|
66
68
|
/**
|
|
69
|
+
* Serializes this instance into the provided serializer context.
|
|
67
70
|
* @param {RawSource} source the raw source to be serialized
|
|
68
71
|
* @param {ObjectSerializerContext} context context
|
|
69
72
|
* @returns {void}
|
|
@@ -74,6 +77,7 @@ register(
|
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
/**
|
|
80
|
+
* Restores this instance from the provided deserializer context.
|
|
77
81
|
* @param {ObjectDeserializerContext} context context
|
|
78
82
|
* @returns {RawSource} raw source
|
|
79
83
|
*/
|
|
@@ -91,6 +95,7 @@ register(
|
|
|
91
95
|
"webpack-sources/ConcatSource",
|
|
92
96
|
new (class ConcatSourceSerializer {
|
|
93
97
|
/**
|
|
98
|
+
* Serializes this instance into the provided serializer context.
|
|
94
99
|
* @param {ConcatSource} source the concat source to be serialized
|
|
95
100
|
* @param {ObjectSerializerContext} context context
|
|
96
101
|
* @returns {void}
|
|
@@ -100,6 +105,7 @@ register(
|
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
/**
|
|
108
|
+
* Restores this instance from the provided deserializer context.
|
|
103
109
|
* @param {ObjectDeserializerContext} context context
|
|
104
110
|
* @returns {ConcatSource} concat source
|
|
105
111
|
*/
|
|
@@ -117,6 +123,7 @@ register(
|
|
|
117
123
|
"webpack-sources/PrefixSource",
|
|
118
124
|
new (class PrefixSourceSerializer {
|
|
119
125
|
/**
|
|
126
|
+
* Serializes this instance into the provided serializer context.
|
|
120
127
|
* @param {PrefixSource} source the prefix source to be serialized
|
|
121
128
|
* @param {ObjectSerializerContext} context context
|
|
122
129
|
* @returns {void}
|
|
@@ -127,6 +134,7 @@ register(
|
|
|
127
134
|
}
|
|
128
135
|
|
|
129
136
|
/**
|
|
137
|
+
* Restores this instance from the provided deserializer context.
|
|
130
138
|
* @param {ObjectDeserializerContext} context context
|
|
131
139
|
* @returns {PrefixSource} prefix source
|
|
132
140
|
*/
|
|
@@ -142,6 +150,7 @@ register(
|
|
|
142
150
|
"webpack-sources/ReplaceSource",
|
|
143
151
|
new (class ReplaceSourceSerializer {
|
|
144
152
|
/**
|
|
153
|
+
* Serializes this instance into the provided serializer context.
|
|
145
154
|
* @param {ReplaceSource} source the replace source to be serialized
|
|
146
155
|
* @param {ObjectSerializerContext} context context
|
|
147
156
|
* @returns {void}
|
|
@@ -162,6 +171,7 @@ register(
|
|
|
162
171
|
}
|
|
163
172
|
|
|
164
173
|
/**
|
|
174
|
+
* Restores this instance from the provided deserializer context.
|
|
165
175
|
* @param {ObjectDeserializerContext} context context
|
|
166
176
|
* @returns {ReplaceSource} replace source
|
|
167
177
|
*/
|
|
@@ -193,6 +203,7 @@ register(
|
|
|
193
203
|
"webpack-sources/OriginalSource",
|
|
194
204
|
new (class OriginalSourceSerializer {
|
|
195
205
|
/**
|
|
206
|
+
* Serializes this instance into the provided serializer context.
|
|
196
207
|
* @param {OriginalSource} source the original source to be serialized
|
|
197
208
|
* @param {ObjectSerializerContext} context context
|
|
198
209
|
* @returns {void}
|
|
@@ -203,6 +214,7 @@ register(
|
|
|
203
214
|
}
|
|
204
215
|
|
|
205
216
|
/**
|
|
217
|
+
* Restores this instance from the provided deserializer context.
|
|
206
218
|
* @param {ObjectDeserializerContext} context context
|
|
207
219
|
* @returns {OriginalSource} original source
|
|
208
220
|
*/
|
|
@@ -220,6 +232,7 @@ register(
|
|
|
220
232
|
"acorn/SourceLocation",
|
|
221
233
|
new (class SourceLocationSerializer {
|
|
222
234
|
/**
|
|
235
|
+
* Serializes this instance into the provided serializer context.
|
|
223
236
|
* @param {SourceLocation} loc the location to be serialized
|
|
224
237
|
* @param {ObjectSerializerContext} context context
|
|
225
238
|
* @returns {void}
|
|
@@ -232,6 +245,7 @@ register(
|
|
|
232
245
|
}
|
|
233
246
|
|
|
234
247
|
/**
|
|
248
|
+
* Restores this instance from the provided deserializer context.
|
|
235
249
|
* @param {ObjectDeserializerContext} context context
|
|
236
250
|
* @returns {RealDependencyLocation} location
|
|
237
251
|
*/
|
|
@@ -256,6 +270,7 @@ register(
|
|
|
256
270
|
"acorn/Position",
|
|
257
271
|
new (class PositionSerializer {
|
|
258
272
|
/**
|
|
273
|
+
* Serializes this instance into the provided serializer context.
|
|
259
274
|
* @param {Position} pos the position to be serialized
|
|
260
275
|
* @param {ObjectSerializerContext} context context
|
|
261
276
|
* @returns {void}
|
|
@@ -266,6 +281,7 @@ register(
|
|
|
266
281
|
}
|
|
267
282
|
|
|
268
283
|
/**
|
|
284
|
+
* Restores this instance from the provided deserializer context.
|
|
269
285
|
* @param {ObjectDeserializerContext} context context
|
|
270
286
|
* @returns {SourcePosition} position
|
|
271
287
|
*/
|
|
@@ -284,6 +300,7 @@ register(
|
|
|
284
300
|
"webpack-sources/SourceMapSource",
|
|
285
301
|
new (class SourceMapSourceSerializer {
|
|
286
302
|
/**
|
|
303
|
+
* Serializes this instance into the provided serializer context.
|
|
287
304
|
* @param {SourceMapSource} source the source map source to be serialized
|
|
288
305
|
* @param {ObjectSerializerContext} context context
|
|
289
306
|
* @returns {void}
|
|
@@ -293,6 +310,7 @@ register(
|
|
|
293
310
|
}
|
|
294
311
|
|
|
295
312
|
/**
|
|
313
|
+
* Restores this instance from the provided deserializer context.
|
|
296
314
|
* @param {ObjectDeserializerContext} context context
|
|
297
315
|
* @returns {SourceMapSource} source source map source
|
|
298
316
|
*/
|
|
@@ -309,6 +327,7 @@ register(
|
|
|
309
327
|
"schema-utils/ValidationError",
|
|
310
328
|
new (class ValidationErrorSerializer {
|
|
311
329
|
/**
|
|
330
|
+
* Serializes this instance into the provided serializer context.
|
|
312
331
|
* @param {ValidationError} error the source map source to be serialized
|
|
313
332
|
* @param {ObjectSerializerContext} context context
|
|
314
333
|
* @returns {void}
|
|
@@ -324,6 +343,7 @@ register(
|
|
|
324
343
|
}
|
|
325
344
|
|
|
326
345
|
/**
|
|
346
|
+
* Restores this instance from the provided deserializer context.
|
|
327
347
|
* @param {ObjectDeserializerContext} context context
|
|
328
348
|
* @returns {ValidationError} error
|
|
329
349
|
*/
|
package/lib/util/removeBOM.js
CHANGED
package/lib/util/runtime.js
CHANGED
|
@@ -15,6 +15,7 @@ const SortableSet = require("./SortableSet");
|
|
|
15
15
|
/** @typedef {RuntimeSpec | boolean} RuntimeCondition */
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
+
* Gets entry runtime.
|
|
18
19
|
* @param {Compilation} compilation the compilation
|
|
19
20
|
* @param {string} name name of the entry
|
|
20
21
|
* @param {EntryOptions=} options optionally already received entry options
|
|
@@ -54,6 +55,7 @@ const getEntryRuntime = (compilation, name, options) => {
|
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
/**
|
|
58
|
+
* Processes the provided runtime.
|
|
57
59
|
* @param {RuntimeSpec} runtime runtime
|
|
58
60
|
* @param {(runtime: string | undefined) => void} fn functor
|
|
59
61
|
* @param {boolean} deterministicOrder enforce a deterministic order
|
|
@@ -73,6 +75,7 @@ const forEachRuntime = (runtime, fn, deterministicOrder = false) => {
|
|
|
73
75
|
};
|
|
74
76
|
|
|
75
77
|
/**
|
|
78
|
+
* Returns runtime key.
|
|
76
79
|
* @template T
|
|
77
80
|
* @param {Exclude<RuntimeSpec, undefined | string>} set set
|
|
78
81
|
* @returns {string} runtime key
|
|
@@ -83,6 +86,7 @@ const getRuntimesKey = (set) => {
|
|
|
83
86
|
};
|
|
84
87
|
|
|
85
88
|
/**
|
|
89
|
+
* Returns key of runtimes.
|
|
86
90
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
87
91
|
* @returns {string} key of runtimes
|
|
88
92
|
*/
|
|
@@ -93,6 +97,7 @@ const getRuntimeKey = (runtime) => {
|
|
|
93
97
|
};
|
|
94
98
|
|
|
95
99
|
/**
|
|
100
|
+
* Returns runtime(s).
|
|
96
101
|
* @param {string} key key of runtimes
|
|
97
102
|
* @returns {RuntimeSpec} runtime(s)
|
|
98
103
|
*/
|
|
@@ -104,6 +109,7 @@ const keyToRuntime = (key) => {
|
|
|
104
109
|
};
|
|
105
110
|
|
|
106
111
|
/**
|
|
112
|
+
* Gets runtimes string.
|
|
107
113
|
* @template T
|
|
108
114
|
* @param {Exclude<RuntimeSpec, undefined | string>} set set
|
|
109
115
|
* @returns {string} runtime string
|
|
@@ -114,6 +120,7 @@ const getRuntimesString = (set) => {
|
|
|
114
120
|
};
|
|
115
121
|
|
|
116
122
|
/**
|
|
123
|
+
* Returns readable version.
|
|
117
124
|
* @param {RuntimeSpec} runtime runtime(s)
|
|
118
125
|
* @returns {string} readable version
|
|
119
126
|
*/
|
|
@@ -124,6 +131,7 @@ const runtimeToString = (runtime) => {
|
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
/**
|
|
134
|
+
* Runtime condition to string.
|
|
127
135
|
* @param {RuntimeCondition} runtimeCondition runtime condition
|
|
128
136
|
* @returns {string} readable version
|
|
129
137
|
*/
|
|
@@ -134,6 +142,7 @@ const runtimeConditionToString = (runtimeCondition) => {
|
|
|
134
142
|
};
|
|
135
143
|
|
|
136
144
|
/**
|
|
145
|
+
* Returns true, when they are equal.
|
|
137
146
|
* @param {RuntimeSpec} a first
|
|
138
147
|
* @param {RuntimeSpec} b second
|
|
139
148
|
* @returns {boolean} true, when they are equal
|
|
@@ -164,6 +173,7 @@ const runtimeEqual = (a, b) => {
|
|
|
164
173
|
};
|
|
165
174
|
|
|
166
175
|
/**
|
|
176
|
+
* Compares the provided values and returns their ordering.
|
|
167
177
|
* @param {RuntimeSpec} a first
|
|
168
178
|
* @param {RuntimeSpec} b second
|
|
169
179
|
* @returns {-1 | 0 | 1} compare
|
|
@@ -184,6 +194,7 @@ const compareRuntime = (a, b) => {
|
|
|
184
194
|
};
|
|
185
195
|
|
|
186
196
|
/**
|
|
197
|
+
* Merges the provided values into a single result.
|
|
187
198
|
* @param {RuntimeSpec} a first
|
|
188
199
|
* @param {RuntimeSpec} b second
|
|
189
200
|
* @returns {RuntimeSpec} merged
|
|
@@ -225,6 +236,7 @@ const mergeRuntime = (a, b) => {
|
|
|
225
236
|
};
|
|
226
237
|
|
|
227
238
|
/**
|
|
239
|
+
* Merges runtime condition.
|
|
228
240
|
* @param {RuntimeCondition} a first
|
|
229
241
|
* @param {RuntimeCondition} b second
|
|
230
242
|
* @param {RuntimeSpec} runtime full runtime
|
|
@@ -246,6 +258,7 @@ const mergeRuntimeCondition = (a, b, runtime) => {
|
|
|
246
258
|
};
|
|
247
259
|
|
|
248
260
|
/**
|
|
261
|
+
* Merges runtime condition non false.
|
|
249
262
|
* @param {RuntimeSpec | true} a first
|
|
250
263
|
* @param {RuntimeSpec | true} b second
|
|
251
264
|
* @param {RuntimeSpec} runtime full runtime
|
|
@@ -265,6 +278,7 @@ const mergeRuntimeConditionNonFalse = (a, b, runtime) => {
|
|
|
265
278
|
};
|
|
266
279
|
|
|
267
280
|
/**
|
|
281
|
+
* Merges runtime owned.
|
|
268
282
|
* @param {RuntimeSpec} a first (may be modified)
|
|
269
283
|
* @param {RuntimeSpec} b second
|
|
270
284
|
* @returns {RuntimeSpec} merged
|
|
@@ -302,6 +316,7 @@ const mergeRuntimeOwned = (a, b) => {
|
|
|
302
316
|
};
|
|
303
317
|
|
|
304
318
|
/**
|
|
319
|
+
* Returns merged.
|
|
305
320
|
* @param {RuntimeSpec} a first
|
|
306
321
|
* @param {RuntimeSpec} b second
|
|
307
322
|
* @returns {RuntimeSpec} merged
|
|
@@ -339,6 +354,7 @@ const intersectRuntime = (a, b) => {
|
|
|
339
354
|
};
|
|
340
355
|
|
|
341
356
|
/**
|
|
357
|
+
* Returns result.
|
|
342
358
|
* @param {RuntimeSpec} a first
|
|
343
359
|
* @param {RuntimeSpec} b second
|
|
344
360
|
* @returns {RuntimeSpec} result
|
|
@@ -384,6 +400,7 @@ const subtractRuntime = (a, b) => {
|
|
|
384
400
|
};
|
|
385
401
|
|
|
386
402
|
/**
|
|
403
|
+
* Subtract runtime condition.
|
|
387
404
|
* @param {RuntimeCondition} a first
|
|
388
405
|
* @param {RuntimeCondition} b second
|
|
389
406
|
* @param {RuntimeSpec} runtime runtime
|
|
@@ -398,6 +415,7 @@ const subtractRuntimeCondition = (a, b, runtime) => {
|
|
|
398
415
|
};
|
|
399
416
|
|
|
400
417
|
/**
|
|
418
|
+
* Returns true/false if filter is constant for all runtimes, otherwise runtimes that are active.
|
|
401
419
|
* @param {RuntimeSpec} runtime runtime
|
|
402
420
|
* @param {(runtime?: RuntimeSpec) => boolean} filter filter function
|
|
403
421
|
* @returns {boolean | RuntimeSpec} true/false if filter is constant for all runtimes, otherwise runtimes that are active
|
|
@@ -424,16 +442,19 @@ const filterRuntime = (runtime, filter) => {
|
|
|
424
442
|
};
|
|
425
443
|
|
|
426
444
|
/**
|
|
445
|
+
* Defines the runtime spec map inner map type used by this module.
|
|
427
446
|
* @template T
|
|
428
447
|
* @typedef {Map<string, T>} RuntimeSpecMapInnerMap
|
|
429
448
|
*/
|
|
430
449
|
|
|
431
450
|
/**
|
|
451
|
+
* Represents RuntimeSpecMap.
|
|
432
452
|
* @template T
|
|
433
453
|
* @template [R=T]
|
|
434
454
|
*/
|
|
435
455
|
class RuntimeSpecMap {
|
|
436
456
|
/**
|
|
457
|
+
* Creates an instance of RuntimeSpecMap.
|
|
437
458
|
* @param {RuntimeSpecMap<T, R>=} clone copy form this
|
|
438
459
|
*/
|
|
439
460
|
constructor(clone) {
|
|
@@ -448,6 +469,7 @@ class RuntimeSpecMap {
|
|
|
448
469
|
}
|
|
449
470
|
|
|
450
471
|
/**
|
|
472
|
+
* Returns value.
|
|
451
473
|
* @param {RuntimeSpec} runtime the runtimes
|
|
452
474
|
* @returns {R | undefined} value
|
|
453
475
|
*/
|
|
@@ -467,6 +489,7 @@ class RuntimeSpecMap {
|
|
|
467
489
|
}
|
|
468
490
|
|
|
469
491
|
/**
|
|
492
|
+
* Returns true, when the runtime is stored.
|
|
470
493
|
* @param {RuntimeSpec} runtime the runtimes
|
|
471
494
|
* @returns {boolean} true, when the runtime is stored
|
|
472
495
|
*/
|
|
@@ -484,6 +507,7 @@ class RuntimeSpecMap {
|
|
|
484
507
|
}
|
|
485
508
|
|
|
486
509
|
/**
|
|
510
|
+
* Updates default using the provided runtime.
|
|
487
511
|
* @param {RuntimeSpec} runtime the runtimes
|
|
488
512
|
* @param {R} value the value
|
|
489
513
|
*/
|
|
@@ -515,6 +539,7 @@ class RuntimeSpecMap {
|
|
|
515
539
|
}
|
|
516
540
|
|
|
517
541
|
/**
|
|
542
|
+
* Returns the new value.
|
|
518
543
|
* @param {RuntimeSpec} runtime the runtimes
|
|
519
544
|
* @param {() => R} computer function to compute the value
|
|
520
545
|
* @returns {R} the new value
|
|
@@ -557,6 +582,7 @@ class RuntimeSpecMap {
|
|
|
557
582
|
}
|
|
558
583
|
|
|
559
584
|
/**
|
|
585
|
+
* Processes the provided runtime.
|
|
560
586
|
* @param {RuntimeSpec} runtime the runtimes
|
|
561
587
|
*/
|
|
562
588
|
delete(runtime) {
|
|
@@ -577,6 +603,7 @@ class RuntimeSpecMap {
|
|
|
577
603
|
}
|
|
578
604
|
|
|
579
605
|
/**
|
|
606
|
+
* Processes the provided runtime.
|
|
580
607
|
* @param {RuntimeSpec} runtime the runtimes
|
|
581
608
|
* @param {(value: R | undefined) => R} fn function to update the value
|
|
582
609
|
*/
|
|
@@ -634,6 +661,7 @@ class RuntimeSpecMap {
|
|
|
634
661
|
}
|
|
635
662
|
|
|
636
663
|
/**
|
|
664
|
+
* Returns values.
|
|
637
665
|
* @returns {IterableIterator<R>} values
|
|
638
666
|
*/
|
|
639
667
|
values() {
|
|
@@ -658,6 +686,7 @@ class RuntimeSpecMap {
|
|
|
658
686
|
|
|
659
687
|
class RuntimeSpecSet {
|
|
660
688
|
/**
|
|
689
|
+
* Creates an instance of RuntimeSpecSet.
|
|
661
690
|
* @param {Iterable<RuntimeSpec>=} iterable iterable
|
|
662
691
|
*/
|
|
663
692
|
constructor(iterable) {
|
|
@@ -671,6 +700,7 @@ class RuntimeSpecSet {
|
|
|
671
700
|
}
|
|
672
701
|
|
|
673
702
|
/**
|
|
703
|
+
* Processes the provided runtime.
|
|
674
704
|
* @param {RuntimeSpec} runtime runtime
|
|
675
705
|
*/
|
|
676
706
|
add(runtime) {
|
|
@@ -678,6 +708,7 @@ class RuntimeSpecSet {
|
|
|
678
708
|
}
|
|
679
709
|
|
|
680
710
|
/**
|
|
711
|
+
* Returns true, when the runtime exists.
|
|
681
712
|
* @param {RuntimeSpec} runtime runtime
|
|
682
713
|
* @returns {boolean} true, when the runtime exists
|
|
683
714
|
*/
|
|
@@ -686,6 +717,7 @@ class RuntimeSpecSet {
|
|
|
686
717
|
}
|
|
687
718
|
|
|
688
719
|
/**
|
|
720
|
+
* Returns iterable iterator.
|
|
689
721
|
* @returns {IterableIterator<RuntimeSpec>} iterable iterator
|
|
690
722
|
*/
|
|
691
723
|
[Symbol.iterator]() {
|
package/lib/util/semver.js
CHANGED
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
/** @typedef {(SemVerRangeItem | SemVerRangeItem[])[]} SemVerRange */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
+
* Returns parsed version.
|
|
14
15
|
* @param {string} str version string
|
|
15
16
|
* @returns {SemVerRange} parsed version
|
|
16
17
|
*/
|
|
17
18
|
const parseVersion = (str) => {
|
|
18
19
|
/**
|
|
20
|
+
* Returns result.
|
|
19
21
|
* @param {str} str str
|
|
20
22
|
* @returns {VersionValue[]} result
|
|
21
23
|
*/
|
|
@@ -49,6 +51,7 @@ module.exports.parseVersion = parseVersion;
|
|
|
49
51
|
|
|
50
52
|
/* eslint-disable eqeqeq */
|
|
51
53
|
/**
|
|
54
|
+
* Returns true, iff a < b.
|
|
52
55
|
* @param {string} a version
|
|
53
56
|
* @param {string} b version
|
|
54
57
|
* @returns {boolean} true, iff a < b
|
|
@@ -98,11 +101,13 @@ const versionLt = (a, b) => {
|
|
|
98
101
|
module.exports.versionLt = versionLt;
|
|
99
102
|
|
|
100
103
|
/**
|
|
104
|
+
* Returns parsed range.
|
|
101
105
|
* @param {string} str range string
|
|
102
106
|
* @returns {SemVerRange} parsed range
|
|
103
107
|
*/
|
|
104
108
|
module.exports.parseRange = (str) => {
|
|
105
109
|
/**
|
|
110
|
+
* Returns result.
|
|
106
111
|
* @param {string} str str
|
|
107
112
|
* @returns {VersionValue[]} result
|
|
108
113
|
*/
|
|
@@ -114,6 +119,7 @@ module.exports.parseRange = (str) => {
|
|
|
114
119
|
|
|
115
120
|
// see https://docs.npmjs.com/misc/semver#range-grammar for grammar
|
|
116
121
|
/**
|
|
122
|
+
* Returns the sem ver range item.
|
|
117
123
|
* @param {string} str str
|
|
118
124
|
* @returns {SemVerRangeItem[]}
|
|
119
125
|
*/
|
|
@@ -143,6 +149,7 @@ module.exports.parseRange = (str) => {
|
|
|
143
149
|
};
|
|
144
150
|
|
|
145
151
|
/**
|
|
152
|
+
* Returns the sem ver range item.
|
|
146
153
|
*
|
|
147
154
|
* @param {SemVerRangeItem[]} range range
|
|
148
155
|
* @returns {SemVerRangeItem[]}
|
|
@@ -163,6 +170,7 @@ module.exports.parseRange = (str) => {
|
|
|
163
170
|
};
|
|
164
171
|
|
|
165
172
|
/**
|
|
173
|
+
* Returns result.
|
|
166
174
|
*
|
|
167
175
|
* @param {SemVerRangeItem[]} range
|
|
168
176
|
* @returns {SemVerRangeItem[]} result
|
|
@@ -172,6 +180,7 @@ module.exports.parseRange = (str) => {
|
|
|
172
180
|
};
|
|
173
181
|
|
|
174
182
|
/**
|
|
183
|
+
* Returns the sem ver range.
|
|
175
184
|
* @param {string} str str
|
|
176
185
|
* @returns {SemVerRange}
|
|
177
186
|
*/
|
|
@@ -230,6 +239,7 @@ module.exports.parseRange = (str) => {
|
|
|
230
239
|
};
|
|
231
240
|
|
|
232
241
|
/**
|
|
242
|
+
* Returns result.
|
|
233
243
|
*
|
|
234
244
|
* @param {SemVerRangeItem[][]} items items
|
|
235
245
|
* @param {number} fn fn
|
|
@@ -251,6 +261,7 @@ module.exports.parseRange = (str) => {
|
|
|
251
261
|
};
|
|
252
262
|
|
|
253
263
|
/**
|
|
264
|
+
* Returns the sem ver range.
|
|
254
265
|
* @param {string} str str
|
|
255
266
|
* @returns {SemVerRange}
|
|
256
267
|
*/
|
|
@@ -291,6 +302,7 @@ module.exports.parseRange = (str) => {
|
|
|
291
302
|
};
|
|
292
303
|
|
|
293
304
|
/**
|
|
305
|
+
* Returns the sem ver range.
|
|
294
306
|
* @param {string} str str
|
|
295
307
|
* @returns {SemVerRange}
|
|
296
308
|
*/
|
|
@@ -309,6 +321,7 @@ module.exports.parseRange = (str) => {
|
|
|
309
321
|
|
|
310
322
|
/* eslint-disable eqeqeq */
|
|
311
323
|
/**
|
|
324
|
+
* Returns the string.
|
|
312
325
|
* @param {SemVerRange} range
|
|
313
326
|
* @returns {string}
|
|
314
327
|
*/
|
|
@@ -370,6 +383,7 @@ const rangeToString = (range) => {
|
|
|
370
383
|
module.exports.rangeToString = rangeToString;
|
|
371
384
|
|
|
372
385
|
/**
|
|
386
|
+
* Returns if version satisfy the range.
|
|
373
387
|
* @param {SemVerRange} range version range
|
|
374
388
|
* @param {string} version the version
|
|
375
389
|
* @returns {boolean} if version satisfy the range
|
|
@@ -531,6 +545,7 @@ const satisfy = (range, version) => {
|
|
|
531
545
|
module.exports.satisfy = satisfy;
|
|
532
546
|
|
|
533
547
|
/**
|
|
548
|
+
* Returns the string.
|
|
534
549
|
* @param {SemVerRange | string | number | false | undefined} json
|
|
535
550
|
* @returns {string}
|
|
536
551
|
*/
|
|
@@ -13,6 +13,7 @@ const memoize = require("./memoize");
|
|
|
13
13
|
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
+
* Defines the serializer type used by this module.
|
|
16
17
|
* @template D, S, C
|
|
17
18
|
* @typedef {import("../serialization/Serializer")<D, S, C>} Serializer
|
|
18
19
|
*/
|
|
@@ -109,6 +110,7 @@ module.exports = {
|
|
|
109
110
|
);
|
|
110
111
|
},
|
|
111
112
|
/**
|
|
113
|
+
* Creates a file serializer.
|
|
112
114
|
* @template D, S, C
|
|
113
115
|
* @param {IntermediateFileSystem} fs filesystem
|
|
114
116
|
* @param {HashFunction} hashFunction hash function to use
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Defines the group options type used by this module.
|
|
9
10
|
* @typedef {object} GroupOptions
|
|
10
11
|
* @property {boolean=} groupChildren
|
|
11
12
|
* @property {boolean=} force
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
16
|
/**
|
|
17
|
+
* Defines the group config type used by this module.
|
|
16
18
|
* @template I
|
|
17
19
|
* @template G
|
|
18
20
|
* @typedef {object} GroupConfig
|
|
@@ -22,17 +24,20 @@
|
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
26
|
/**
|
|
27
|
+
* Defines the group type used by this module.
|
|
25
28
|
* @template I
|
|
26
29
|
* @template G
|
|
27
30
|
* @typedef {{ config: GroupConfig<I, G>, name: string, alreadyGrouped: boolean, items: Items<I, G> | undefined }} Group
|
|
28
31
|
*/
|
|
29
32
|
|
|
30
33
|
/**
|
|
34
|
+
* Defines the groups type used by this module.
|
|
31
35
|
* @template I, G
|
|
32
36
|
* @typedef {Set<Group<I, G>>} Groups
|
|
33
37
|
*/
|
|
34
38
|
|
|
35
39
|
/**
|
|
40
|
+
* Defines the item with groups type used by this module.
|
|
36
41
|
* @template I
|
|
37
42
|
* @template G
|
|
38
43
|
* @typedef {object} ItemWithGroups
|
|
@@ -41,11 +46,13 @@
|
|
|
41
46
|
*/
|
|
42
47
|
|
|
43
48
|
/**
|
|
49
|
+
* Defines the items type used by this module.
|
|
44
50
|
* @template T, G
|
|
45
51
|
* @typedef {Set<ItemWithGroups<T, G>>} Items
|
|
46
52
|
*/
|
|
47
53
|
|
|
48
54
|
/**
|
|
55
|
+
* Returns grouped items.
|
|
49
56
|
* @template I
|
|
50
57
|
* @template G
|
|
51
58
|
* @template R
|
|
@@ -90,6 +97,7 @@ const smartGrouping = (items, groupConfigs) => {
|
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
/**
|
|
100
|
+
* Returns groups items.
|
|
93
101
|
* @param {Items<I, G>} itemsWithGroups input items with groups
|
|
94
102
|
* @returns {(I | G)[]} groups items
|
|
95
103
|
*/
|
package/lib/util/source.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
9
|
+
/** @typedef {import("./Hash")} Hash */
|
|
9
10
|
|
|
10
11
|
/** @type {WeakMap<Source, WeakMap<Source, boolean>>} */
|
|
11
12
|
const equalityCache = new WeakMap();
|
|
12
13
|
|
|
13
14
|
/**
|
|
15
|
+
* Checks whether source equal true, when both sources are equal.
|
|
14
16
|
* @param {Source} a a source
|
|
15
17
|
* @param {Source} b another source
|
|
16
18
|
* @returns {boolean} true, when both sources are equal
|
|
@@ -29,6 +31,7 @@ const _isSourceEqual = (a, b) => {
|
|
|
29
31
|
};
|
|
30
32
|
|
|
31
33
|
/**
|
|
34
|
+
* Checks whether this object is source equal.
|
|
32
35
|
* @param {Source} a a source
|
|
33
36
|
* @param {Source} b another source
|
|
34
37
|
* @returns {boolean} true, when both sources are equal
|
|
@@ -59,4 +62,24 @@ const isSourceEqual = (a, b) => {
|
|
|
59
62
|
return result;
|
|
60
63
|
};
|
|
61
64
|
|
|
65
|
+
// TODO remove in webpack 6, this is protection against authors who directly use `webpack-sources` outdated version
|
|
66
|
+
/**
|
|
67
|
+
* Feeds the Source's content into a Hash without forcing a single
|
|
68
|
+
* concatenated Buffer. Uses webpack-sources >= 3.4.0 `buffers()` when
|
|
69
|
+
* available so `ConcatSource` can stream its children directly.
|
|
70
|
+
* @param {Hash} hash hash to update
|
|
71
|
+
* @param {Source} source source whose bytes are appended
|
|
72
|
+
* @returns {void}
|
|
73
|
+
*/
|
|
74
|
+
const updateHashFromSource = (hash, source) => {
|
|
75
|
+
// TODO webpack 6: drop the `buffers` check, require webpack-sources >= 3.4
|
|
76
|
+
// and call `source.buffers()` unconditionally.
|
|
77
|
+
if (typeof source.buffers === "function") {
|
|
78
|
+
for (const buf of source.buffers()) hash.update(buf);
|
|
79
|
+
} else {
|
|
80
|
+
hash.update(source.buffer());
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
62
84
|
module.exports.isSourceEqual = isSourceEqual;
|
|
85
|
+
module.exports.updateHashFromSource = updateHashFromSource;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Topologically sort `nodes` using Kahn's algorithm with source-order
|
|
9
|
+
* tie-breaking. Nodes that participate in a cycle remain unvisited —
|
|
10
|
+
* `visit` is never called for them — so the caller can naturally keep
|
|
11
|
+
* them in their original position by treating "no visit" as "keep
|
|
12
|
+
* source order".
|
|
13
|
+
*
|
|
14
|
+
* Precondition: every node appearing in `graph` (as a key OR inside any
|
|
15
|
+
* successor set) must also appear in `nodes`. The caller owns this
|
|
16
|
+
* invariant; the function does not validate it.
|
|
17
|
+
*
|
|
18
|
+
* Complexity: O(V·(V + E)). Each outer iteration scans the ready set
|
|
19
|
+
* linearly to find the smallest source-index node. CSS composes graphs
|
|
20
|
+
* are small (a handful of files per module) so this is fine; if a much
|
|
21
|
+
* larger graph ever needs sorting here, swap in a min-heap.
|
|
22
|
+
* @template T
|
|
23
|
+
* @param {Map<T, Set<T>>} graph adjacency list (`a -> b` means `a` must come before `b`)
|
|
24
|
+
* @param {T[]} nodes nodes in source first-appearance order
|
|
25
|
+
* @param {(node: T, index: number) => void} visit called once per non-cyclic node in topological order
|
|
26
|
+
* @returns {void}
|
|
27
|
+
*/
|
|
28
|
+
module.exports = (graph, nodes, visit) => {
|
|
29
|
+
/** @type {Map<T, number>} */
|
|
30
|
+
const inDegree = new Map();
|
|
31
|
+
/** @type {Map<T, number>} */
|
|
32
|
+
const sourceIndex = new Map();
|
|
33
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
34
|
+
inDegree.set(nodes[i], 0);
|
|
35
|
+
sourceIndex.set(nodes[i], i);
|
|
36
|
+
}
|
|
37
|
+
for (const successors of graph.values()) {
|
|
38
|
+
for (const to of successors) {
|
|
39
|
+
inDegree.set(to, /** @type {number} */ (inDegree.get(to)) + 1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const ready = nodes.filter((n) => inDegree.get(n) === 0);
|
|
44
|
+
let index = 0;
|
|
45
|
+
while (ready.length > 0) {
|
|
46
|
+
// Smallest-source-index wins ties. Linear scan + swap-with-last
|
|
47
|
+
// + pop avoids re-sorting the ready set on every iteration.
|
|
48
|
+
let minIdx = 0;
|
|
49
|
+
for (let i = 1; i < ready.length; i++) {
|
|
50
|
+
if (
|
|
51
|
+
/** @type {number} */ (sourceIndex.get(ready[i])) <
|
|
52
|
+
/** @type {number} */ (sourceIndex.get(ready[minIdx]))
|
|
53
|
+
) {
|
|
54
|
+
minIdx = i;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const node = ready[minIdx];
|
|
58
|
+
ready[minIdx] = ready[ready.length - 1];
|
|
59
|
+
ready.pop();
|
|
60
|
+
visit(node, index++);
|
|
61
|
+
const successors = graph.get(node);
|
|
62
|
+
if (!successors) continue;
|
|
63
|
+
for (const to of successors) {
|
|
64
|
+
const newDeg = /** @type {number} */ (inDegree.get(to)) - 1;
|
|
65
|
+
inDegree.set(to, newDeg);
|
|
66
|
+
if (newDeg === 0) ready.push(to);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|