webpack 5.106.0 → 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 -4
- 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 +71 -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 +11 -3
- 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 +14 -5
- 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/StackedMap.js
CHANGED
|
@@ -9,16 +9,22 @@ const TOMBSTONE = Symbol("tombstone");
|
|
|
9
9
|
const UNDEFINED_MARKER = Symbol("undefined");
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
+
* Public cell value exposed by `StackedMap`, where `undefined` is preserved as
|
|
13
|
+
* a valid stored result.
|
|
12
14
|
* @template T
|
|
13
15
|
* @typedef {T | undefined} Cell<T>
|
|
14
16
|
*/
|
|
15
17
|
|
|
16
18
|
/**
|
|
19
|
+
* Internal cell value used to distinguish deleted entries and explicit
|
|
20
|
+
* `undefined` assignments while traversing stacked scopes.
|
|
17
21
|
* @template T
|
|
18
22
|
* @typedef {T | typeof TOMBSTONE | typeof UNDEFINED_MARKER} InternalCell<T>
|
|
19
23
|
*/
|
|
20
24
|
|
|
21
25
|
/**
|
|
26
|
+
* Converts an internal key/value pair into the external representation returned
|
|
27
|
+
* by iteration helpers.
|
|
22
28
|
* @template K
|
|
23
29
|
* @template V
|
|
24
30
|
* @param {[K, InternalCell<V>]} pair the internal cell
|
|
@@ -34,11 +40,14 @@ const extractPair = (pair) => {
|
|
|
34
40
|
};
|
|
35
41
|
|
|
36
42
|
/**
|
|
43
|
+
* Layered map that supports child scopes while memoizing lookups from parent
|
|
44
|
+
* scopes into the current layer.
|
|
37
45
|
* @template K
|
|
38
46
|
* @template V
|
|
39
47
|
*/
|
|
40
48
|
class StackedMap {
|
|
41
49
|
/**
|
|
50
|
+
* Creates a new map layer on top of an optional parent stack.
|
|
42
51
|
* @param {Map<K, InternalCell<V>>[]=} parentStack an optional parent
|
|
43
52
|
*/
|
|
44
53
|
constructor(parentStack) {
|
|
@@ -50,6 +59,8 @@ class StackedMap {
|
|
|
50
59
|
}
|
|
51
60
|
|
|
52
61
|
/**
|
|
62
|
+
* Stores a value in the current layer, preserving explicit `undefined`
|
|
63
|
+
* values with an internal marker.
|
|
53
64
|
* @param {K} item the key of the element to add
|
|
54
65
|
* @param {V} value the value of the element to add
|
|
55
66
|
* @returns {void}
|
|
@@ -59,6 +70,8 @@ class StackedMap {
|
|
|
59
70
|
}
|
|
60
71
|
|
|
61
72
|
/**
|
|
73
|
+
* Deletes a key from the current view, either by removing it outright in the
|
|
74
|
+
* root layer or by recording a tombstone in child layers.
|
|
62
75
|
* @param {K} item the item to delete
|
|
63
76
|
* @returns {void}
|
|
64
77
|
*/
|
|
@@ -71,6 +84,8 @@ class StackedMap {
|
|
|
71
84
|
}
|
|
72
85
|
|
|
73
86
|
/**
|
|
87
|
+
* Checks whether a key exists in the current scope chain, caching any parent
|
|
88
|
+
* lookup result in the current layer.
|
|
74
89
|
* @param {K} item the item to test
|
|
75
90
|
* @returns {boolean} true if the item exists in this set
|
|
76
91
|
*/
|
|
@@ -93,6 +108,8 @@ class StackedMap {
|
|
|
93
108
|
}
|
|
94
109
|
|
|
95
110
|
/**
|
|
111
|
+
* Returns the visible value for a key, caching parent hits and misses in the
|
|
112
|
+
* current layer.
|
|
96
113
|
* @param {K} item the key of the element to return
|
|
97
114
|
* @returns {Cell<V>} the value of the element
|
|
98
115
|
*/
|
|
@@ -117,6 +134,9 @@ class StackedMap {
|
|
|
117
134
|
}
|
|
118
135
|
}
|
|
119
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Collapses the stacked layers into a single concrete map.
|
|
139
|
+
*/
|
|
120
140
|
_compress() {
|
|
121
141
|
if (this.stack.length === 1) return;
|
|
122
142
|
this.map = new Map();
|
|
@@ -132,30 +152,55 @@ class StackedMap {
|
|
|
132
152
|
this.stack = [this.map];
|
|
133
153
|
}
|
|
134
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Returns the visible keys as an array after collapsing the stack.
|
|
157
|
+
* @returns {K[]} array of keys
|
|
158
|
+
*/
|
|
135
159
|
asArray() {
|
|
136
160
|
this._compress();
|
|
137
161
|
return [...this.map.keys()];
|
|
138
162
|
}
|
|
139
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Returns the visible keys as a `Set` after collapsing the stack.
|
|
166
|
+
* @returns {Set<K>} set of keys
|
|
167
|
+
*/
|
|
140
168
|
asSet() {
|
|
141
169
|
this._compress();
|
|
142
170
|
return new Set(this.map.keys());
|
|
143
171
|
}
|
|
144
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Returns visible key/value pairs using the external representation.
|
|
175
|
+
* @returns {[K, Cell<V>][]} array of key/value pairs
|
|
176
|
+
*/
|
|
145
177
|
asPairArray() {
|
|
146
178
|
this._compress();
|
|
147
179
|
return Array.from(this.map.entries(), extractPair);
|
|
148
180
|
}
|
|
149
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Returns the visible contents as a plain `Map`.
|
|
184
|
+
* @returns {Map<K, Cell<V>>} materialized map
|
|
185
|
+
*/
|
|
150
186
|
asMap() {
|
|
151
187
|
return new Map(this.asPairArray());
|
|
152
188
|
}
|
|
153
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Returns the number of visible keys after collapsing the stack.
|
|
192
|
+
* @returns {number} number of keys
|
|
193
|
+
*/
|
|
154
194
|
get size() {
|
|
155
195
|
this._compress();
|
|
156
196
|
return this.map.size;
|
|
157
197
|
}
|
|
158
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Creates a child `StackedMap` that sees the current layers as its parent
|
|
201
|
+
* scope.
|
|
202
|
+
* @returns {StackedMap<K, V>} child map
|
|
203
|
+
*/
|
|
159
204
|
createChild() {
|
|
160
205
|
return new StackedMap(this.stack);
|
|
161
206
|
}
|
package/lib/util/StringXor.js
CHANGED
package/lib/util/TupleQueue.js
CHANGED
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
const TupleSet = require("./TupleSet");
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
+
* FIFO queue for tuples that preserves uniqueness by delegating membership
|
|
12
|
+
* tracking to `TupleSet`.
|
|
11
13
|
* @template T
|
|
12
14
|
* @template V
|
|
13
15
|
*/
|
|
14
16
|
class TupleQueue {
|
|
15
17
|
/**
|
|
18
|
+
* Seeds the queue with an optional iterable of tuples to visit.
|
|
16
19
|
* @param {Iterable<[T, V, ...EXPECTED_ANY]>=} items The initial elements.
|
|
17
20
|
*/
|
|
18
21
|
constructor(items) {
|
|
@@ -29,7 +32,7 @@ class TupleQueue {
|
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
32
|
-
* Returns the number of
|
|
35
|
+
* Returns the number of distinct tuples currently queued.
|
|
33
36
|
* @returns {number} The number of elements in this queue.
|
|
34
37
|
*/
|
|
35
38
|
get length() {
|
|
@@ -37,7 +40,7 @@ class TupleQueue {
|
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
/**
|
|
40
|
-
*
|
|
43
|
+
* Enqueues a tuple if it is not already present in the underlying set.
|
|
41
44
|
* @param {[T, V, ...EXPECTED_ANY]} item The element to add.
|
|
42
45
|
* @returns {void}
|
|
43
46
|
*/
|
|
@@ -46,7 +49,8 @@ class TupleQueue {
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
/**
|
|
49
|
-
*
|
|
52
|
+
* Removes and returns the next queued tuple, rebuilding the iterator when
|
|
53
|
+
* the underlying tuple set has changed since the last full pass.
|
|
50
54
|
* @returns {[T, V, ...EXPECTED_ANY] | undefined} The head of the queue of `undefined` if this queue is empty.
|
|
51
55
|
*/
|
|
52
56
|
dequeue() {
|
package/lib/util/TupleSet.js
CHANGED
|
@@ -6,17 +6,22 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Nested map structure used to index tuple prefixes until the final tuple
|
|
10
|
+
* element can be stored in a `Set`.
|
|
9
11
|
* @template K
|
|
10
12
|
* @template V
|
|
11
13
|
* @typedef {Map<K, InnerMap<K, V> | Set<V>>} InnerMap
|
|
12
14
|
*/
|
|
13
15
|
|
|
14
16
|
/**
|
|
17
|
+
* Stores tuples of arbitrary length while preserving efficient prefix lookups
|
|
18
|
+
* through a tree of maps that ends in a set of final values.
|
|
15
19
|
* @template T
|
|
16
20
|
* @template V
|
|
17
21
|
*/
|
|
18
22
|
class TupleSet {
|
|
19
23
|
/**
|
|
24
|
+
* Seeds the tuple set with an optional iterable of tuples.
|
|
20
25
|
* @param {Iterable<[T, V, ...EXPECTED_ANY]>=} init init
|
|
21
26
|
*/
|
|
22
27
|
constructor(init) {
|
|
@@ -31,6 +36,7 @@ class TupleSet {
|
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
/**
|
|
39
|
+
* Adds a tuple to the set, creating any missing prefix maps along the way.
|
|
34
40
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
35
41
|
* @returns {void}
|
|
36
42
|
*/
|
|
@@ -59,6 +65,7 @@ class TupleSet {
|
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
/**
|
|
68
|
+
* Checks whether the exact tuple is already present in the set.
|
|
62
69
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
63
70
|
* @returns {boolean} true, if the tuple is in the Set
|
|
64
71
|
*/
|
|
@@ -83,6 +90,7 @@ class TupleSet {
|
|
|
83
90
|
}
|
|
84
91
|
|
|
85
92
|
/**
|
|
93
|
+
* Removes a tuple from the set when it is present.
|
|
86
94
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
87
95
|
* @returns {void}
|
|
88
96
|
*/
|
|
@@ -109,10 +117,13 @@ class TupleSet {
|
|
|
109
117
|
}
|
|
110
118
|
|
|
111
119
|
/**
|
|
120
|
+
* Iterates over every stored tuple by walking the nested map structure and
|
|
121
|
+
* yielding each complete prefix plus its terminal set value.
|
|
112
122
|
* @returns {Iterator<[T, V, ...EXPECTED_ANY]>} iterator
|
|
113
123
|
*/
|
|
114
124
|
[Symbol.iterator]() {
|
|
115
125
|
/**
|
|
126
|
+
* Iterator type used while traversing nested tuple-prefix maps.
|
|
116
127
|
* @template T, V
|
|
117
128
|
* @typedef {MapIterator<[T, InnerMap<T, V> | Set<V>]>} IteratorStack
|
|
118
129
|
*/
|
|
@@ -127,6 +138,8 @@ class TupleSet {
|
|
|
127
138
|
let currentSetIterator;
|
|
128
139
|
|
|
129
140
|
/**
|
|
141
|
+
* Advances through nested maps until a terminal value set is reached or
|
|
142
|
+
* every remaining branch has been exhausted.
|
|
130
143
|
* @param {IteratorStack<T, V>} it iterator
|
|
131
144
|
* @returns {boolean} result
|
|
132
145
|
*/
|
package/lib/util/WeakTupleMap.js
CHANGED
|
@@ -6,33 +6,44 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
+
* Strong-key child map used for tuple elements that cannot be stored in a
|
|
10
|
+
* `WeakMap`.
|
|
9
11
|
* @template {EXPECTED_ANY[]} T
|
|
10
12
|
* @template V
|
|
11
13
|
* @typedef {Map<EXPECTED_ANY, WeakTupleMap<T, V>>} M
|
|
12
14
|
*/
|
|
13
15
|
|
|
14
16
|
/**
|
|
17
|
+
* Weak-key child map used for tuple elements that are objects and can be held
|
|
18
|
+
* without preventing garbage collection.
|
|
15
19
|
* @template {EXPECTED_ANY[]} T
|
|
16
20
|
* @template V
|
|
17
21
|
* @typedef {WeakMap<EXPECTED_OBJECT, WeakTupleMap<T, V>>} W
|
|
18
22
|
*/
|
|
19
23
|
|
|
20
24
|
/**
|
|
25
|
+
* Reports whether a tuple element can be stored in a `WeakMap`.
|
|
21
26
|
* @param {EXPECTED_ANY} thing thing
|
|
22
27
|
* @returns {boolean} true if is weak
|
|
23
28
|
*/
|
|
24
29
|
const isWeakKey = (thing) => typeof thing === "object" && thing !== null;
|
|
25
30
|
|
|
26
31
|
/**
|
|
32
|
+
* Extracts the element type from a tuple-like array.
|
|
27
33
|
* @template {unknown[]} T
|
|
28
34
|
* @typedef {T extends ReadonlyArray<infer ElementType> ? ElementType : never} ArrayElement
|
|
29
35
|
*/
|
|
30
36
|
|
|
31
37
|
/**
|
|
38
|
+
* Stores values by tuple keys while using `WeakMap` for object elements so the
|
|
39
|
+
* cache can release entries when those objects are collected.
|
|
32
40
|
* @template {EXPECTED_ANY[]} K
|
|
33
41
|
* @template V
|
|
34
42
|
*/
|
|
35
43
|
class WeakTupleMap {
|
|
44
|
+
/**
|
|
45
|
+
* Initializes an empty tuple trie node with optional value and child maps.
|
|
46
|
+
*/
|
|
36
47
|
constructor() {
|
|
37
48
|
/** @private */
|
|
38
49
|
this.f = 0;
|
|
@@ -54,6 +65,7 @@ class WeakTupleMap {
|
|
|
54
65
|
}
|
|
55
66
|
|
|
56
67
|
/**
|
|
68
|
+
* Stores a value at the node identified by the provided tuple key.
|
|
57
69
|
* @param {[...K, V]} args tuple
|
|
58
70
|
* @returns {void}
|
|
59
71
|
*/
|
|
@@ -67,6 +79,7 @@ class WeakTupleMap {
|
|
|
67
79
|
}
|
|
68
80
|
|
|
69
81
|
/**
|
|
82
|
+
* Checks whether the exact tuple key has a stored value.
|
|
70
83
|
* @param {K} args tuple
|
|
71
84
|
* @returns {boolean} true, if the tuple is in the Set
|
|
72
85
|
*/
|
|
@@ -81,6 +94,7 @@ class WeakTupleMap {
|
|
|
81
94
|
}
|
|
82
95
|
|
|
83
96
|
/**
|
|
97
|
+
* Returns the value stored for the exact tuple key, if any.
|
|
84
98
|
* @param {K} args tuple
|
|
85
99
|
* @returns {V | undefined} the value
|
|
86
100
|
*/
|
|
@@ -95,6 +109,8 @@ class WeakTupleMap {
|
|
|
95
109
|
}
|
|
96
110
|
|
|
97
111
|
/**
|
|
112
|
+
* Returns an existing value for the tuple or computes, stores, and returns a
|
|
113
|
+
* new one when the tuple is missing.
|
|
98
114
|
* @param {[...K, (...args: K) => V]} args tuple
|
|
99
115
|
* @returns {V} the value
|
|
100
116
|
*/
|
|
@@ -112,6 +128,7 @@ class WeakTupleMap {
|
|
|
112
128
|
}
|
|
113
129
|
|
|
114
130
|
/**
|
|
131
|
+
* Removes the value stored for the tuple key without pruning the trie.
|
|
115
132
|
* @param {K} args tuple
|
|
116
133
|
* @returns {void}
|
|
117
134
|
*/
|
|
@@ -126,6 +143,7 @@ class WeakTupleMap {
|
|
|
126
143
|
}
|
|
127
144
|
|
|
128
145
|
/**
|
|
146
|
+
* Clears the stored value and all strong and weak child maps from this node.
|
|
129
147
|
* @returns {void}
|
|
130
148
|
*/
|
|
131
149
|
clear() {
|
|
@@ -135,15 +153,24 @@ class WeakTupleMap {
|
|
|
135
153
|
this.m = undefined;
|
|
136
154
|
}
|
|
137
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Returns the value stored directly on this trie node.
|
|
158
|
+
* @returns {V | undefined} stored value
|
|
159
|
+
*/
|
|
138
160
|
_getValue() {
|
|
139
161
|
return this.v;
|
|
140
162
|
}
|
|
141
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Reports whether this trie node currently stores a value.
|
|
166
|
+
* @returns {boolean} true when a value is present
|
|
167
|
+
*/
|
|
142
168
|
_hasValue() {
|
|
143
169
|
return (this.f & 1) === 1;
|
|
144
170
|
}
|
|
145
171
|
|
|
146
172
|
/**
|
|
173
|
+
* Stores a value directly on this trie node.
|
|
147
174
|
* @param {V} v value
|
|
148
175
|
* @private
|
|
149
176
|
*/
|
|
@@ -152,12 +179,16 @@ class WeakTupleMap {
|
|
|
152
179
|
this.v = v;
|
|
153
180
|
}
|
|
154
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Removes the value stored directly on this trie node.
|
|
184
|
+
*/
|
|
155
185
|
_deleteValue() {
|
|
156
186
|
this.f &= 6;
|
|
157
187
|
this.v = undefined;
|
|
158
188
|
}
|
|
159
189
|
|
|
160
190
|
/**
|
|
191
|
+
* Returns the child node for a tuple element without creating one.
|
|
161
192
|
* @param {ArrayElement<K>} thing thing
|
|
162
193
|
* @returns {WeakTupleMap<K, V> | undefined} thing
|
|
163
194
|
* @private
|
|
@@ -176,6 +207,8 @@ class WeakTupleMap {
|
|
|
176
207
|
}
|
|
177
208
|
|
|
178
209
|
/**
|
|
210
|
+
* Returns the child node for a tuple element, creating and storing it when
|
|
211
|
+
* necessary.
|
|
179
212
|
* @private
|
|
180
213
|
* @param {ArrayElement<K>} thing thing
|
|
181
214
|
* @returns {WeakTupleMap<K, V>} value
|
|
@@ -65,6 +65,7 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
|
|
|
65
65
|
};
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
+
* Defines the search type used by this module.
|
|
68
69
|
* @template T
|
|
69
70
|
* @typedef {(items: T[], start: number, compareFn?: number | ((item: T, needle: number) => number), l?: number, h?: number) => number} Search
|
|
70
71
|
*/
|
package/lib/util/cleverMerge.js
CHANGED
|
@@ -51,6 +51,7 @@ const cachedCleverMerge = (first, second) => {
|
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
+
* Caches d set property.
|
|
54
55
|
* @template T
|
|
55
56
|
* @param {Partial<T>} obj object
|
|
56
57
|
* @param {string} property property
|
|
@@ -86,10 +87,12 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
86
87
|
};
|
|
87
88
|
|
|
88
89
|
/**
|
|
90
|
+
* Defines the by values type used by this module.
|
|
89
91
|
* @typedef {Map<string, EXPECTED_ANY>} ByValues
|
|
90
92
|
*/
|
|
91
93
|
|
|
92
94
|
/**
|
|
95
|
+
* Defines the object parsed property entry type used by this module.
|
|
93
96
|
* @template T
|
|
94
97
|
* @typedef {object} ObjectParsedPropertyEntry
|
|
95
98
|
* @property {T[keyof T] | undefined} base base value
|
|
@@ -100,16 +103,19 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
100
103
|
/** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
|
|
101
104
|
|
|
102
105
|
/**
|
|
106
|
+
* Defines the parsed object static type used by this module.
|
|
103
107
|
* @template {object} T
|
|
104
108
|
* @typedef {Map<keyof T, ObjectParsedPropertyEntry<T>>} ParsedObjectStatic
|
|
105
109
|
*/
|
|
106
110
|
|
|
107
111
|
/**
|
|
112
|
+
* Defines the parsed object dynamic type used by this module.
|
|
108
113
|
* @template {object} T
|
|
109
114
|
* @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
|
|
110
115
|
*/
|
|
111
116
|
|
|
112
117
|
/**
|
|
118
|
+
* Defines the parsed object type used by this module.
|
|
113
119
|
* @template {object} T
|
|
114
120
|
* @typedef {object} ParsedObject
|
|
115
121
|
* @property {ParsedObjectStatic<T>} static static properties (key is property name)
|
|
@@ -120,6 +126,7 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
120
126
|
const parseCache = new WeakMap();
|
|
121
127
|
|
|
122
128
|
/**
|
|
129
|
+
* Caches d parse object.
|
|
123
130
|
* @template {object} T
|
|
124
131
|
* @param {T} obj the object
|
|
125
132
|
* @returns {ParsedObject<T>} parsed object
|
|
@@ -135,6 +142,7 @@ const cachedParseObject = (obj) => {
|
|
|
135
142
|
/** @typedef {{ [p: string]: { [p: string]: EXPECTED_ANY } } | DynamicFunction} ByObject */
|
|
136
143
|
|
|
137
144
|
/**
|
|
145
|
+
* Returns parsed object.
|
|
138
146
|
* @template {object} T
|
|
139
147
|
* @param {T} obj the object
|
|
140
148
|
* @returns {ParsedObject<T>} parsed object
|
|
@@ -145,6 +153,7 @@ const parseObject = (obj) => {
|
|
|
145
153
|
/** @type {ParsedObjectDynamic<T> | undefined} */
|
|
146
154
|
let dynamicInfo;
|
|
147
155
|
/**
|
|
156
|
+
* Returns object parsed property entry.
|
|
148
157
|
* @param {keyof T} p path
|
|
149
158
|
* @returns {Partial<ObjectParsedPropertyEntry<T>>} object parsed property entry
|
|
150
159
|
*/
|
|
@@ -221,6 +230,7 @@ const parseObject = (obj) => {
|
|
|
221
230
|
};
|
|
222
231
|
|
|
223
232
|
/**
|
|
233
|
+
* Returns the object.
|
|
224
234
|
* @template {object} T
|
|
225
235
|
* @param {ParsedObjectStatic<T>} info static properties (key is property name)
|
|
226
236
|
* @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
|
|
@@ -269,6 +279,7 @@ const VALUE_TYPE_OBJECT = 3;
|
|
|
269
279
|
const VALUE_TYPE_DELETE = 4;
|
|
270
280
|
|
|
271
281
|
/**
|
|
282
|
+
* Returns value type.
|
|
272
283
|
* @template T
|
|
273
284
|
* @param {T} value a single value
|
|
274
285
|
* @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
|
|
@@ -311,6 +322,7 @@ const cleverMerge = (first, second) => {
|
|
|
311
322
|
};
|
|
312
323
|
|
|
313
324
|
/**
|
|
325
|
+
* Returns merged object of first and second object.
|
|
314
326
|
* @template {object} T
|
|
315
327
|
* @template {object} O
|
|
316
328
|
* Merges two objects. Objects are deeply clever merged.
|
|
@@ -378,6 +390,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
|
|
|
378
390
|
};
|
|
379
391
|
|
|
380
392
|
/**
|
|
393
|
+
* Merges the provided values into a single result.
|
|
381
394
|
* @template T, O
|
|
382
395
|
* @param {ObjectParsedPropertyEntry<T>} firstEntry a
|
|
383
396
|
* @param {ObjectParsedPropertyEntry<O>} secondEntry b
|
|
@@ -510,6 +523,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
|
|
|
510
523
|
};
|
|
511
524
|
|
|
512
525
|
/**
|
|
526
|
+
* Gets from by values.
|
|
513
527
|
* @template V
|
|
514
528
|
* @param {ByValues} byValues all values
|
|
515
529
|
* @param {string} key value of the selector
|
|
@@ -523,6 +537,7 @@ const getFromByValues = (byValues, key) => {
|
|
|
523
537
|
};
|
|
524
538
|
|
|
525
539
|
/**
|
|
540
|
+
* Merges single value.
|
|
526
541
|
* @template A
|
|
527
542
|
* @template B
|
|
528
543
|
* @param {A | A[]} a value
|
|
@@ -585,6 +600,7 @@ const mergeSingleValue = (a, b, internalCaching) => {
|
|
|
585
600
|
};
|
|
586
601
|
|
|
587
602
|
/**
|
|
603
|
+
* Removes operations.
|
|
588
604
|
* @template {object} T
|
|
589
605
|
* @param {T} obj the object
|
|
590
606
|
* @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
|
|
@@ -632,6 +648,7 @@ const removeOperations = (obj, keysToKeepOriginalValue = []) => {
|
|
|
632
648
|
};
|
|
633
649
|
|
|
634
650
|
/**
|
|
651
|
+
* Resolves by property.
|
|
635
652
|
* @template T
|
|
636
653
|
* @template {keyof T} P
|
|
637
654
|
* @template V
|