webpack 5.106.1 → 5.106.2
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/lib/APIPlugin.js +3 -1
- package/lib/AbstractMethodError.js +10 -1
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AsyncDependencyToInitialChunkError.js +6 -1
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +26 -1
- package/lib/CacheFacade.js +26 -0
- package/lib/CaseSensitiveModulesWarning.js +9 -1
- 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/CommentCompilationWarning.js +6 -0
- package/lib/CompatibilityPlugin.js +15 -1
- package/lib/Compilation.js +127 -1
- package/lib/Compiler.js +37 -4
- 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 +12 -0
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/CssModule.js +6 -0
- package/lib/DefinePlugin.js +20 -7
- package/lib/DelegatedModule.js +13 -0
- package/lib/DelegatedModuleFactoryPlugin.js +3 -0
- package/lib/DelegatedPlugin.js +2 -1
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +26 -3
- package/lib/DependencyTemplate.js +5 -0
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DllEntryPlugin.js +2 -1
- package/lib/DllModule.js +11 -0
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +2 -1
- package/lib/DllReferencePlugin.js +11 -6
- 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 +2 -1
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +3 -1
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +38 -0
- package/lib/ExternalModuleFactoryPlugin.js +10 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +105 -0
- 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 +13 -0
- package/lib/GraphHelpers.js +3 -0
- package/lib/HookWebpackError.js +6 -0
- package/lib/HotModuleReplacementPlugin.js +9 -1
- package/lib/IgnoreErrorModuleFactory.js +2 -0
- package/lib/IgnorePlugin.js +2 -1
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/InvalidDependenciesModuleWarning.js +1 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibManifestPlugin.js +4 -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 +82 -1
- package/lib/ModuleBuildError.js +3 -0
- package/lib/ModuleDependencyWarning.js +1 -0
- package/lib/ModuleError.js +2 -0
- package/lib/ModuleFactory.js +5 -0
- 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/ModuleNotFoundError.js +1 -0
- package/lib/ModuleParseError.js +3 -0
- package/lib/ModuleRestoreError.js +1 -0
- package/lib/ModuleSourceTypeConstants.js +1 -0
- package/lib/ModuleStoreError.js +1 -0
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleWarning.js +3 -0
- package/lib/MultiCompiler.js +28 -0
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffInWebError.js +1 -0
- package/lib/NodeStuffPlugin.js +10 -1
- package/lib/NormalModule.js +30 -2
- package/lib/NormalModuleFactory.js +25 -0
- package/lib/NormalModuleReplacementPlugin.js +1 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +2 -0
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +2 -1
- package/lib/ProgressPlugin.js +29 -12
- 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/RequireJsStuffPlugin.js +2 -1
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +1 -0
- package/lib/RuntimeModule.js +13 -0
- package/lib/RuntimePlugin.js +2 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SizeFormatHelpers.js +1 -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/UnhandledSchemeError.js +6 -0
- package/lib/UnsupportedFeatureWarning.js +1 -0
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +1 -1
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +14 -0
- package/lib/WebpackError.js +3 -0
- package/lib/WebpackIsIncludedPlugin.js +2 -0
- package/lib/WebpackOptionsApply.js +1 -0
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +6 -0
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +20 -2
- package/lib/asset/AssetModulesPlugin.js +4 -1
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +6 -0
- 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 +15 -0
- 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 +29 -0
- 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 +30 -0
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +35 -2
- package/lib/config/normalization.js +12 -0
- 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 +35 -14
- package/lib/css/CssInjectStyleRuntimeModule.js +1 -0
- package/lib/css/CssLoadingRuntimeModule.js +1 -0
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +1 -0
- package/lib/css/CssModulesPlugin.js +69 -3
- package/lib/css/CssParser.js +59 -1
- package/lib/css/walkCssTokens.js +31 -0
- 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 +13 -0
- 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 +1 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +8 -0
- package/lib/dependencies/CommonJsFullRequireDependency.js +4 -0
- package/lib/dependencies/CommonJsImportsParserPlugin.js +20 -0
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +3 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +8 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -0
- 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 +6 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +1 -0
- package/lib/dependencies/CssIcssExportDependency.js +10 -2
- package/lib/dependencies/CssIcssImportDependency.js +4 -1
- package/lib/dependencies/CssIcssSymbolDependency.js +5 -1
- package/lib/dependencies/CssImportDependency.js +4 -0
- package/lib/dependencies/CssUrlDependency.js +7 -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 +3 -0
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +5 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +33 -2
- 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 +11 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +9 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +17 -2
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -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 +3 -0
- 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 +7 -0
- package/lib/dependencies/ImportPhase.js +6 -2
- 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 +3 -0
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- 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 +4 -1
- 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 +4 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +9 -1
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- 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/formatLocation.js +2 -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/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 +20 -0
- 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 +5 -0
- 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 +23 -1
- package/lib/javascript/JavascriptParser.js +163 -0
- package/lib/javascript/JavascriptParserHelpers.js +6 -0
- 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 +8 -10
- package/lib/library/AbstractLibraryPlugin.js +16 -1
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +7 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -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 +3 -1
- 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 +3 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +11 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +15 -0
- package/lib/optimize/InnerGraphPlugin.js +3 -1
- 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 +1 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +21 -1
- package/lib/optimize/RealContentHashPlugin.js +16 -1
- 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 +7 -1
- package/lib/optimize/SplitChunksPlugin.js +49 -1
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -0
- package/lib/performance/SizeLimitsPlugin.js +7 -1
- 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 +1 -0
- 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 +6 -0
- 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 +2 -0
- 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/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 +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +6 -1
- 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 +12 -0
- 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 +6 -1
- package/lib/sharing/ConsumeSharedRuntimeModule.js +1 -0
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +11 -0
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +4 -1
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +3 -0
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +56 -1
- package/lib/stats/DefaultStatsPresetPlugin.js +11 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +37 -1
- package/lib/stats/StatsFactory.js +12 -0
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/url/URLParserPlugin.js +6 -0
- 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 +20 -0
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -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 +6 -0
- 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 +17 -0
- package/lib/util/comparators.js +31 -0
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +6 -0
- package/lib/util/conventions.js +4 -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/util/fs.js +63 -0
- 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/wasm-hash.js +5 -0
- package/lib/util/identifier.js +19 -0
- package/lib/util/magicComment.js +1 -0
- 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 +112 -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 +2 -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 +10 -1
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -0
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
- 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 +10 -0
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +12 -14
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +44 -55
- package/types.d.ts +4594 -331
package/lib/util/AsyncQueue.js
CHANGED
|
@@ -17,6 +17,7 @@ const DONE_STATE = 2;
|
|
|
17
17
|
let inHandleResult = 0;
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
+
* Defines the callback callback.
|
|
20
21
|
* @template T
|
|
21
22
|
* @callback Callback
|
|
22
23
|
* @param {(WebpackError | null)=} err
|
|
@@ -25,12 +26,14 @@ let inHandleResult = 0;
|
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
28
|
/**
|
|
29
|
+
* Represents AsyncQueueEntry.
|
|
28
30
|
* @template T
|
|
29
31
|
* @template K
|
|
30
32
|
* @template R
|
|
31
33
|
*/
|
|
32
34
|
class AsyncQueueEntry {
|
|
33
35
|
/**
|
|
36
|
+
* Creates an instance of AsyncQueueEntry.
|
|
34
37
|
* @param {T} item the item
|
|
35
38
|
* @param {Callback<R>} callback the callback
|
|
36
39
|
*/
|
|
@@ -50,22 +53,26 @@ class AsyncQueueEntry {
|
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
/**
|
|
56
|
+
* Defines the get key type used by this module.
|
|
53
57
|
* @template T, K
|
|
54
58
|
* @typedef {(item: T) => K} getKey
|
|
55
59
|
*/
|
|
56
60
|
|
|
57
61
|
/**
|
|
62
|
+
* Defines the processor type used by this module.
|
|
58
63
|
* @template T, R
|
|
59
64
|
* @typedef {(item: T, callback: Callback<R>) => void} Processor
|
|
60
65
|
*/
|
|
61
66
|
|
|
62
67
|
/**
|
|
68
|
+
* Represents AsyncQueue.
|
|
63
69
|
* @template T
|
|
64
70
|
* @template K
|
|
65
71
|
* @template R
|
|
66
72
|
*/
|
|
67
73
|
class AsyncQueue {
|
|
68
74
|
/**
|
|
75
|
+
* Creates an instance of AsyncQueue.
|
|
69
76
|
* @param {object} options options object
|
|
70
77
|
* @param {string=} options.name name of the queue
|
|
71
78
|
* @param {number=} options.parallelism how many items should be processed at once
|
|
@@ -119,6 +126,7 @@ class AsyncQueue {
|
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
/**
|
|
129
|
+
* Returns context of execution.
|
|
122
130
|
* @returns {string} context of execution
|
|
123
131
|
*/
|
|
124
132
|
getContext() {
|
|
@@ -126,6 +134,7 @@ class AsyncQueue {
|
|
|
126
134
|
}
|
|
127
135
|
|
|
128
136
|
/**
|
|
137
|
+
* Updates context using the provided value.
|
|
129
138
|
* @param {string} value context of execution
|
|
130
139
|
*/
|
|
131
140
|
setContext(value) {
|
|
@@ -133,6 +142,7 @@ class AsyncQueue {
|
|
|
133
142
|
}
|
|
134
143
|
|
|
135
144
|
/**
|
|
145
|
+
* Processes the provided item.
|
|
136
146
|
* @param {T} item an item
|
|
137
147
|
* @param {Callback<R>} callback callback function
|
|
138
148
|
* @returns {void}
|
|
@@ -185,6 +195,7 @@ class AsyncQueue {
|
|
|
185
195
|
}
|
|
186
196
|
|
|
187
197
|
/**
|
|
198
|
+
* Processes the provided item.
|
|
188
199
|
* @param {T} item an item
|
|
189
200
|
* @returns {void}
|
|
190
201
|
*/
|
|
@@ -225,6 +236,7 @@ class AsyncQueue {
|
|
|
225
236
|
}
|
|
226
237
|
|
|
227
238
|
/**
|
|
239
|
+
* Describes how this stop operation behaves.
|
|
228
240
|
* @returns {void}
|
|
229
241
|
*/
|
|
230
242
|
stop() {
|
|
@@ -245,6 +257,7 @@ class AsyncQueue {
|
|
|
245
257
|
}
|
|
246
258
|
|
|
247
259
|
/**
|
|
260
|
+
* Increase parallelism.
|
|
248
261
|
* @returns {void}
|
|
249
262
|
*/
|
|
250
263
|
increaseParallelism() {
|
|
@@ -258,6 +271,7 @@ class AsyncQueue {
|
|
|
258
271
|
}
|
|
259
272
|
|
|
260
273
|
/**
|
|
274
|
+
* Decrease parallelism.
|
|
261
275
|
* @returns {void}
|
|
262
276
|
*/
|
|
263
277
|
decreaseParallelism() {
|
|
@@ -266,6 +280,7 @@ class AsyncQueue {
|
|
|
266
280
|
}
|
|
267
281
|
|
|
268
282
|
/**
|
|
283
|
+
* Checks whether this async queue is processing.
|
|
269
284
|
* @param {T} item an item
|
|
270
285
|
* @returns {boolean} true, if the item is currently being processed
|
|
271
286
|
*/
|
|
@@ -276,6 +291,7 @@ class AsyncQueue {
|
|
|
276
291
|
}
|
|
277
292
|
|
|
278
293
|
/**
|
|
294
|
+
* Checks whether this async queue is queued.
|
|
279
295
|
* @param {T} item an item
|
|
280
296
|
* @returns {boolean} true, if the item is currently queued
|
|
281
297
|
*/
|
|
@@ -286,6 +302,7 @@ class AsyncQueue {
|
|
|
286
302
|
}
|
|
287
303
|
|
|
288
304
|
/**
|
|
305
|
+
* Checks whether this async queue is done.
|
|
289
306
|
* @param {T} item an item
|
|
290
307
|
* @returns {boolean} true, if the item is currently queued
|
|
291
308
|
*/
|
|
@@ -296,6 +313,7 @@ class AsyncQueue {
|
|
|
296
313
|
}
|
|
297
314
|
|
|
298
315
|
/**
|
|
316
|
+
* Describes how this ensure processing operation behaves.
|
|
299
317
|
* @returns {void}
|
|
300
318
|
*/
|
|
301
319
|
_ensureProcessing() {
|
|
@@ -324,6 +342,7 @@ class AsyncQueue {
|
|
|
324
342
|
}
|
|
325
343
|
|
|
326
344
|
/**
|
|
345
|
+
* Processes the provided entry.
|
|
327
346
|
* @param {AsyncQueueEntry<T, K, R>} entry the entry
|
|
328
347
|
* @returns {void}
|
|
329
348
|
*/
|
|
@@ -351,6 +370,7 @@ class AsyncQueue {
|
|
|
351
370
|
}
|
|
352
371
|
|
|
353
372
|
/**
|
|
373
|
+
* Processes the provided entry.
|
|
354
374
|
* @param {AsyncQueueEntry<T, K, R>} entry the entry
|
|
355
375
|
* @param {(WebpackError | null)=} err error, if any
|
|
356
376
|
* @param {(R | null)=} result result, if any
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Returns last item.
|
|
9
10
|
* @template T
|
|
10
11
|
* @param {Iterable<T>} set a set
|
|
11
12
|
* @returns {T | undefined} last item
|
|
@@ -18,6 +19,7 @@ const last = (set) => {
|
|
|
18
19
|
};
|
|
19
20
|
|
|
20
21
|
/**
|
|
22
|
+
* Returns true, if some items match the filter predicate.
|
|
21
23
|
* @template T
|
|
22
24
|
* @param {Iterable<T>} iterable iterable
|
|
23
25
|
* @param {(value: T) => boolean | null | undefined} filter predicate
|
|
@@ -31,6 +33,7 @@ const someInIterable = (iterable, filter) => {
|
|
|
31
33
|
};
|
|
32
34
|
|
|
33
35
|
/**
|
|
36
|
+
* Returns count of items.
|
|
34
37
|
* @template T
|
|
35
38
|
* @param {Iterable<T>} iterable an iterable
|
|
36
39
|
* @returns {number} count of items
|
|
@@ -9,23 +9,28 @@ const { first } = require("./SetHelpers");
|
|
|
9
9
|
const SortableSet = require("./SortableSet");
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
+
* Callback that extracts the grouping key for an item at one bucket layer.
|
|
12
13
|
* @template T
|
|
13
14
|
* @template K
|
|
14
15
|
* @typedef {(item: T) => K} GetKey
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
/**
|
|
19
|
+
* Comparison function used to order keys or leaf items.
|
|
18
20
|
* @template T
|
|
19
21
|
* @typedef {(a: T, n: T) => number} Comparator
|
|
20
22
|
*/
|
|
21
23
|
|
|
22
24
|
/**
|
|
25
|
+
* Internal bucket entry, either another nested bucket set or a sorted leaf set.
|
|
23
26
|
* @template T
|
|
24
27
|
* @template K
|
|
25
28
|
* @typedef {LazyBucketSortedSet<T, K> | SortableSet<T>} Entry
|
|
26
29
|
*/
|
|
27
30
|
|
|
28
31
|
/**
|
|
32
|
+
* Constructor argument accepted for nested bucket layers or the final leaf
|
|
33
|
+
* comparator.
|
|
29
34
|
* @template T
|
|
30
35
|
* @template K
|
|
31
36
|
* @typedef {GetKey<T, K> | Comparator<K> | Comparator<T>} Arg
|
|
@@ -45,6 +50,8 @@ const SortableSet = require("./SortableSet");
|
|
|
45
50
|
*/
|
|
46
51
|
class LazyBucketSortedSet {
|
|
47
52
|
/**
|
|
53
|
+
* Creates a lazily sorted, potentially multi-level bucket structure whose
|
|
54
|
+
* order is only fully resolved when items are popped.
|
|
48
55
|
* @param {GetKey<T, K>} getKey function to get key from item
|
|
49
56
|
* @param {Comparator<K>=} comparator comparator to sort keys
|
|
50
57
|
* @param {...Arg<T, K>} args more pairs of getKey and comparator plus optional final comparator for the last layer
|
|
@@ -62,6 +69,8 @@ class LazyBucketSortedSet {
|
|
|
62
69
|
}
|
|
63
70
|
|
|
64
71
|
/**
|
|
72
|
+
* Adds an item to the unsorted staging area so sorting can be deferred until
|
|
73
|
+
* an ordered pop is requested.
|
|
65
74
|
* @param {T} item an item
|
|
66
75
|
* @returns {void}
|
|
67
76
|
*/
|
|
@@ -71,6 +80,8 @@ class LazyBucketSortedSet {
|
|
|
71
80
|
}
|
|
72
81
|
|
|
73
82
|
/**
|
|
83
|
+
* Inserts an item into the correct nested bucket, creating intermediate
|
|
84
|
+
* bucket structures on demand.
|
|
74
85
|
* @param {K} key key of item
|
|
75
86
|
* @param {T} item the item
|
|
76
87
|
* @returns {void}
|
|
@@ -95,6 +106,8 @@ class LazyBucketSortedSet {
|
|
|
95
106
|
}
|
|
96
107
|
|
|
97
108
|
/**
|
|
109
|
+
* Removes an item from either the unsorted staging area or its resolved
|
|
110
|
+
* bucket and prunes empty buckets as needed.
|
|
98
111
|
* @param {T} item an item
|
|
99
112
|
* @returns {void}
|
|
100
113
|
*/
|
|
@@ -113,6 +126,7 @@ class LazyBucketSortedSet {
|
|
|
113
126
|
}
|
|
114
127
|
|
|
115
128
|
/**
|
|
129
|
+
* Removes an empty bucket key and its corresponding nested entry.
|
|
116
130
|
* @param {K} key key to be removed
|
|
117
131
|
* @returns {void}
|
|
118
132
|
*/
|
|
@@ -122,6 +136,8 @@ class LazyBucketSortedSet {
|
|
|
122
136
|
}
|
|
123
137
|
|
|
124
138
|
/**
|
|
139
|
+
* Removes and returns the smallest item according to the configured bucket
|
|
140
|
+
* order, sorting only the portions of the structure that are needed.
|
|
125
141
|
* @returns {T | undefined} an item
|
|
126
142
|
*/
|
|
127
143
|
popFirst() {
|
|
@@ -158,6 +174,8 @@ class LazyBucketSortedSet {
|
|
|
158
174
|
}
|
|
159
175
|
|
|
160
176
|
/**
|
|
177
|
+
* Begins an in-place update for an item and returns a completion callback
|
|
178
|
+
* that can either reinsert it under a new key or remove it entirely.
|
|
161
179
|
* @param {T} item to be updated item
|
|
162
180
|
* @returns {(remove?: true) => void} finish update
|
|
163
181
|
*/
|
|
@@ -222,6 +240,8 @@ class LazyBucketSortedSet {
|
|
|
222
240
|
}
|
|
223
241
|
|
|
224
242
|
/**
|
|
243
|
+
* Appends iterators for every stored bucket and leaf to support unordered
|
|
244
|
+
* traversal across the entire structure.
|
|
225
245
|
* @param {Iterator<T>[]} iterators list of iterators to append to
|
|
226
246
|
* @returns {void}
|
|
227
247
|
*/
|
|
@@ -245,6 +265,7 @@ class LazyBucketSortedSet {
|
|
|
245
265
|
}
|
|
246
266
|
|
|
247
267
|
/**
|
|
268
|
+
* Iterates over all stored items without imposing bucket sort order.
|
|
248
269
|
* @returns {Iterator<T>} the iterator
|
|
249
270
|
*/
|
|
250
271
|
[Symbol.iterator]() {
|
package/lib/util/LazySet.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
const makeSerializable = require("./makeSerializable");
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
+
* Merges every queued iterable directly into the concrete backing set.
|
|
11
12
|
* @template T
|
|
12
13
|
* @param {Set<T>} targetSet set where items should be added
|
|
13
14
|
* @param {Set<Iterable<T>>} toMerge iterables to be merged
|
|
@@ -22,6 +23,8 @@ const merge = (targetSet, toMerge) => {
|
|
|
22
23
|
};
|
|
23
24
|
|
|
24
25
|
/**
|
|
26
|
+
* Flattens nested `LazySet` instances into a single collection of iterables
|
|
27
|
+
* that can later be merged into the backing set.
|
|
25
28
|
* @template T
|
|
26
29
|
* @param {Set<Iterable<T>>} targetSet set where iterables should be added
|
|
27
30
|
* @param {LazySet<T>[]} toDeepMerge lazy sets to be flattened
|
|
@@ -40,6 +43,7 @@ const flatten = (targetSet, toDeepMerge) => {
|
|
|
40
43
|
};
|
|
41
44
|
|
|
42
45
|
/**
|
|
46
|
+
* Defines the set iterator type used by this module.
|
|
43
47
|
* @template T
|
|
44
48
|
* @typedef {import("typescript-iterable").SetIterator<T>} SetIterator
|
|
45
49
|
*/
|
|
@@ -52,6 +56,8 @@ const flatten = (targetSet, toDeepMerge) => {
|
|
|
52
56
|
*/
|
|
53
57
|
class LazySet {
|
|
54
58
|
/**
|
|
59
|
+
* Seeds the set with an optional iterable while preparing internal queues for
|
|
60
|
+
* deferred merges.
|
|
55
61
|
* @param {Iterable<T>=} iterable init iterable
|
|
56
62
|
*/
|
|
57
63
|
constructor(iterable) {
|
|
@@ -65,11 +71,17 @@ class LazySet {
|
|
|
65
71
|
this._deopt = false;
|
|
66
72
|
}
|
|
67
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Flattens any nested lazy sets that were queued for merging.
|
|
76
|
+
*/
|
|
68
77
|
_flatten() {
|
|
69
78
|
flatten(this._toMerge, this._toDeepMerge);
|
|
70
79
|
this._toDeepMerge.length = 0;
|
|
71
80
|
}
|
|
72
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Materializes all deferred additions into the backing set.
|
|
84
|
+
*/
|
|
73
85
|
_merge() {
|
|
74
86
|
this._flatten();
|
|
75
87
|
merge(this._set, this._toMerge);
|
|
@@ -77,6 +89,10 @@ class LazySet {
|
|
|
77
89
|
this._needMerge = false;
|
|
78
90
|
}
|
|
79
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Reports whether the set is empty without forcing a full merge.
|
|
94
|
+
* @returns {boolean} true when no items have been stored or queued
|
|
95
|
+
*/
|
|
80
96
|
_isEmpty() {
|
|
81
97
|
return (
|
|
82
98
|
this._set.size === 0 &&
|
|
@@ -85,12 +101,17 @@ class LazySet {
|
|
|
85
101
|
);
|
|
86
102
|
}
|
|
87
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Returns the number of items after applying any deferred merges.
|
|
106
|
+
* @returns {number} number of items in the set
|
|
107
|
+
*/
|
|
88
108
|
get size() {
|
|
89
109
|
if (this._needMerge) this._merge();
|
|
90
110
|
return this._set.size;
|
|
91
111
|
}
|
|
92
112
|
|
|
93
113
|
/**
|
|
114
|
+
* Adds a single item immediately to the concrete backing set.
|
|
94
115
|
* @param {T} item an item
|
|
95
116
|
* @returns {LazySet<T>} itself
|
|
96
117
|
*/
|
|
@@ -100,6 +121,8 @@ class LazySet {
|
|
|
100
121
|
}
|
|
101
122
|
|
|
102
123
|
/**
|
|
124
|
+
* Queues another iterable or lazy set for later merging so large bulk adds
|
|
125
|
+
* can stay cheap until the set is read.
|
|
103
126
|
* @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set
|
|
104
127
|
* @returns {LazySet<T>} itself
|
|
105
128
|
*/
|
|
@@ -126,6 +149,9 @@ class LazySet {
|
|
|
126
149
|
return this;
|
|
127
150
|
}
|
|
128
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Removes all items and clears every deferred merge queue.
|
|
154
|
+
*/
|
|
129
155
|
clear() {
|
|
130
156
|
this._set.clear();
|
|
131
157
|
this._toMerge.clear();
|
|
@@ -135,6 +161,8 @@ class LazySet {
|
|
|
135
161
|
}
|
|
136
162
|
|
|
137
163
|
/**
|
|
164
|
+
* Deletes an item after first materializing any deferred additions that may
|
|
165
|
+
* contain it.
|
|
138
166
|
* @param {T} value an item
|
|
139
167
|
* @returns {boolean} true, if the value was in the Set before
|
|
140
168
|
*/
|
|
@@ -144,6 +172,8 @@ class LazySet {
|
|
|
144
172
|
}
|
|
145
173
|
|
|
146
174
|
/**
|
|
175
|
+
* Returns the set's entry iterator and permanently switches future
|
|
176
|
+
* operations to eager merge mode to preserve iterator correctness.
|
|
147
177
|
* @returns {SetIterator<[T, T]>} entries
|
|
148
178
|
*/
|
|
149
179
|
entries() {
|
|
@@ -153,6 +183,8 @@ class LazySet {
|
|
|
153
183
|
}
|
|
154
184
|
|
|
155
185
|
/**
|
|
186
|
+
* Iterates over every item after forcing pending merges and switching to
|
|
187
|
+
* eager mode for correctness during iteration.
|
|
156
188
|
* @template K
|
|
157
189
|
* @param {(value: T, value2: T, set: Set<T>) => void} callbackFn function called for each entry
|
|
158
190
|
* @param {K} thisArg this argument for the callbackFn
|
|
@@ -166,6 +198,7 @@ class LazySet {
|
|
|
166
198
|
}
|
|
167
199
|
|
|
168
200
|
/**
|
|
201
|
+
* Checks whether an item is present after applying any deferred merges.
|
|
169
202
|
* @param {T} item an item
|
|
170
203
|
* @returns {boolean} true, when the item is in the Set
|
|
171
204
|
*/
|
|
@@ -175,6 +208,7 @@ class LazySet {
|
|
|
175
208
|
}
|
|
176
209
|
|
|
177
210
|
/**
|
|
211
|
+
* Returns the key iterator, eagerly materializing pending merges first.
|
|
178
212
|
* @returns {SetIterator<T>} keys
|
|
179
213
|
*/
|
|
180
214
|
keys() {
|
|
@@ -184,6 +218,7 @@ class LazySet {
|
|
|
184
218
|
}
|
|
185
219
|
|
|
186
220
|
/**
|
|
221
|
+
* Returns the value iterator, eagerly materializing pending merges first.
|
|
187
222
|
* @returns {SetIterator<T>} values
|
|
188
223
|
*/
|
|
189
224
|
values() {
|
|
@@ -193,6 +228,7 @@ class LazySet {
|
|
|
193
228
|
}
|
|
194
229
|
|
|
195
230
|
/**
|
|
231
|
+
* Returns the default iterator over values after forcing pending merges.
|
|
196
232
|
* @returns {SetIterator<T>} iterable iterator
|
|
197
233
|
*/
|
|
198
234
|
[Symbol.iterator]() {
|
|
@@ -207,6 +243,8 @@ class LazySet {
|
|
|
207
243
|
}
|
|
208
244
|
|
|
209
245
|
/**
|
|
246
|
+
* Serializes the fully materialized set contents into webpack's object
|
|
247
|
+
* serialization stream.
|
|
210
248
|
* @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context
|
|
211
249
|
*/
|
|
212
250
|
serialize({ write }) {
|
|
@@ -216,6 +254,7 @@ class LazySet {
|
|
|
216
254
|
}
|
|
217
255
|
|
|
218
256
|
/**
|
|
257
|
+
* Restores a `LazySet` from serialized item data.
|
|
219
258
|
* @template T
|
|
220
259
|
* @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context
|
|
221
260
|
* @returns {LazySet<T>} lazy set
|
package/lib/util/Queue.js
CHANGED
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* FIFO queue that keeps items unique by storing them in insertion order inside
|
|
10
|
+
* a `Set`.
|
|
9
11
|
* @template T
|
|
10
12
|
*/
|
|
11
13
|
class Queue {
|
|
12
14
|
/**
|
|
15
|
+
* Seeds the queue with an optional iterable of initial unique items.
|
|
13
16
|
* @param {Iterable<T>=} items The initial elements.
|
|
14
17
|
*/
|
|
15
18
|
constructor(items) {
|
|
@@ -21,7 +24,7 @@ class Queue {
|
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
|
-
* Returns the number of
|
|
27
|
+
* Returns the number of unique items currently waiting in the queue.
|
|
25
28
|
* @returns {number} The number of elements in this queue.
|
|
26
29
|
*/
|
|
27
30
|
get length() {
|
|
@@ -29,7 +32,7 @@ class Queue {
|
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
32
|
-
*
|
|
35
|
+
* Enqueues an item, moving nothing if that value is already present.
|
|
33
36
|
* @param {T} item The element to add.
|
|
34
37
|
* @returns {void}
|
|
35
38
|
*/
|
|
@@ -38,7 +41,7 @@ class Queue {
|
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
/**
|
|
41
|
-
*
|
|
44
|
+
* Removes and returns the oldest enqueued item.
|
|
42
45
|
* @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
|
|
43
46
|
*/
|
|
44
47
|
dequeue() {
|
package/lib/util/Semaphore.js
CHANGED
|
@@ -5,9 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Simple counting semaphore used to limit how many asynchronous tasks may run
|
|
10
|
+
* concurrently.
|
|
11
|
+
*/
|
|
8
12
|
class Semaphore {
|
|
9
13
|
/**
|
|
10
|
-
*
|
|
14
|
+
* Initializes the semaphore with the number of permits that may be held at
|
|
15
|
+
* the same time.
|
|
11
16
|
* @param {number} available the amount available number of "tasks"
|
|
12
17
|
* in the Semaphore
|
|
13
18
|
*/
|
|
@@ -20,6 +25,8 @@ class Semaphore {
|
|
|
20
25
|
}
|
|
21
26
|
|
|
22
27
|
/**
|
|
28
|
+
* Acquires a permit for the callback immediately when one is available or
|
|
29
|
+
* queues the callback until another task releases its permit.
|
|
23
30
|
* @param {() => void} callback function block to capture and run
|
|
24
31
|
* @returns {void}
|
|
25
32
|
*/
|
|
@@ -32,6 +39,9 @@ class Semaphore {
|
|
|
32
39
|
}
|
|
33
40
|
}
|
|
34
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Releases a permit and schedules the next waiting callback, if any.
|
|
44
|
+
*/
|
|
35
45
|
release() {
|
|
36
46
|
this.available++;
|
|
37
47
|
if (this.waiters.length > 0) {
|
|
@@ -39,6 +49,9 @@ class Semaphore {
|
|
|
39
49
|
}
|
|
40
50
|
}
|
|
41
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Drains the next waiting callback after a permit becomes available.
|
|
54
|
+
*/
|
|
42
55
|
_continue() {
|
|
43
56
|
if (this.available > 0 && this.waiters.length > 0) {
|
|
44
57
|
this.available--;
|
package/lib/util/SetHelpers.js
CHANGED
|
@@ -52,6 +52,7 @@ const isSubset = (bigSet, smallSet) => {
|
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
+
* Returns found item.
|
|
55
56
|
* @template T
|
|
56
57
|
* @param {Set<T>} set a set
|
|
57
58
|
* @param {(set: T) => boolean} fn selector function
|
|
@@ -64,6 +65,7 @@ const find = (set, fn) => {
|
|
|
64
65
|
};
|
|
65
66
|
|
|
66
67
|
/**
|
|
68
|
+
* Returns first item.
|
|
67
69
|
* @template T
|
|
68
70
|
* @param {Set<T> | ReadonlySet<T>} set a set
|
|
69
71
|
* @returns {T | undefined} first item
|
|
@@ -74,6 +76,7 @@ const first = (set) => {
|
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
/**
|
|
79
|
+
* Returns combined set, may be identical to a or b.
|
|
77
80
|
* @template T
|
|
78
81
|
* @param {Set<T>} a first
|
|
79
82
|
* @param {Set<T>} b second
|
package/lib/util/SortableSet.js
CHANGED
|
@@ -47,6 +47,7 @@ class SortableSet extends Set {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
+
* Returns itself.
|
|
50
51
|
* @param {T} value value to add to set
|
|
51
52
|
* @returns {this} returns itself
|
|
52
53
|
*/
|
|
@@ -59,6 +60,7 @@ class SortableSet extends Set {
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
/**
|
|
63
|
+
* Returns true if value existed in set, false otherwise.
|
|
62
64
|
* @param {T} value value to delete
|
|
63
65
|
* @returns {boolean} true if value existed in set, false otherwise
|
|
64
66
|
*/
|
|
@@ -69,6 +71,7 @@ class SortableSet extends Set {
|
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
/**
|
|
74
|
+
* Describes how this clear operation behaves.
|
|
72
75
|
* @returns {void}
|
|
73
76
|
*/
|
|
74
77
|
clear() {
|
|
@@ -146,6 +149,7 @@ class SortableSet extends Set {
|
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
/**
|
|
152
|
+
* Invalidates the cached state associated with this value.
|
|
149
153
|
* @private
|
|
150
154
|
* @returns {void}
|
|
151
155
|
*/
|
|
@@ -156,6 +160,7 @@ class SortableSet extends Set {
|
|
|
156
160
|
}
|
|
157
161
|
|
|
158
162
|
/**
|
|
163
|
+
* Invalidate ordered cache.
|
|
159
164
|
* @private
|
|
160
165
|
* @returns {void}
|
|
161
166
|
*/
|
|
@@ -166,6 +171,7 @@ class SortableSet extends Set {
|
|
|
166
171
|
}
|
|
167
172
|
|
|
168
173
|
/**
|
|
174
|
+
* Returns the raw array.
|
|
169
175
|
* @returns {T[]} the raw array
|
|
170
176
|
*/
|
|
171
177
|
toJSON() {
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
* @template V
|
|
32
32
|
*/
|
|
33
33
|
class StackedCacheMap {
|
|
34
|
+
/**
|
|
35
|
+
* Initializes the mutable fallback map and the stack of immutable cache
|
|
36
|
+
* layers.
|
|
37
|
+
*/
|
|
34
38
|
constructor() {
|
|
35
39
|
/** @type {Map<K, V>} */
|
|
36
40
|
this.map = new Map();
|
|
@@ -39,9 +43,9 @@ class StackedCacheMap {
|
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
46
|
+
* Adds another cache layer. Immutable maps are retained by reference and
|
|
47
|
+
* reordered so larger layers are checked first, while mutable maps are
|
|
48
|
+
* copied into the fallback map.
|
|
45
49
|
* @param {ReadonlyMap<K, V>} map map to add
|
|
46
50
|
* @param {boolean=} immutable if 'map' is immutable and StackedCacheMap can keep referencing it
|
|
47
51
|
*/
|
|
@@ -64,6 +68,7 @@ class StackedCacheMap {
|
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
/**
|
|
71
|
+
* Stores or overrides a value in the mutable fallback map.
|
|
67
72
|
* @param {K} item the key of the element to add
|
|
68
73
|
* @param {V} value the value of the element to add
|
|
69
74
|
* @returns {void}
|
|
@@ -73,6 +78,8 @@ class StackedCacheMap {
|
|
|
73
78
|
}
|
|
74
79
|
|
|
75
80
|
/**
|
|
81
|
+
* Rejects deletions because this data structure is optimized for append-only
|
|
82
|
+
* cache layers.
|
|
76
83
|
* @param {K} item the item to delete
|
|
77
84
|
* @returns {void}
|
|
78
85
|
*/
|
|
@@ -81,6 +88,8 @@ class StackedCacheMap {
|
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
/**
|
|
91
|
+
* Rejects `has` checks because they would force the same layered lookup work
|
|
92
|
+
* as `get` without returning the cached value.
|
|
84
93
|
* @param {K} item the item to test
|
|
85
94
|
* @returns {boolean} true if the item exists in this set
|
|
86
95
|
*/
|
|
@@ -91,6 +100,8 @@ class StackedCacheMap {
|
|
|
91
100
|
}
|
|
92
101
|
|
|
93
102
|
/**
|
|
103
|
+
* Looks up a key by scanning immutable cache layers first and then the
|
|
104
|
+
* mutable fallback map.
|
|
94
105
|
* @param {K} item the key of the element to return
|
|
95
106
|
* @returns {V | undefined} the value of the element
|
|
96
107
|
*/
|
|
@@ -102,12 +113,17 @@ class StackedCacheMap {
|
|
|
102
113
|
return this.map.get(item);
|
|
103
114
|
}
|
|
104
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Removes every cache layer and clears the mutable fallback map.
|
|
118
|
+
*/
|
|
105
119
|
clear() {
|
|
106
120
|
this.stack.length = 0;
|
|
107
121
|
this.map.clear();
|
|
108
122
|
}
|
|
109
123
|
|
|
110
124
|
/**
|
|
125
|
+
* Returns the total number of entries across the fallback map and all stacked
|
|
126
|
+
* cache layers.
|
|
111
127
|
* @returns {number} size of the map
|
|
112
128
|
*/
|
|
113
129
|
get size() {
|
|
@@ -119,6 +135,7 @@ class StackedCacheMap {
|
|
|
119
135
|
}
|
|
120
136
|
|
|
121
137
|
/**
|
|
138
|
+
* Iterates over the fallback map first and then each stacked cache layer.
|
|
122
139
|
* @returns {Iterator<[K, V]>} iterator
|
|
123
140
|
*/
|
|
124
141
|
[Symbol.iterator]() {
|