@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -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 +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
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,130 +40,243 @@ const extractPair = (pair) => {
|
|
|
34
40
|
};
|
|
35
41
|
|
|
36
42
|
/**
|
|
43
|
+
* Layered map that supports child scopes while memoizing lookups from parent
|
|
44
|
+
* scopes. Layers form a linked parent chain, so `createChild` is O(1) instead
|
|
45
|
+
* of copying a layer array per scope. A layer's `Map` is only allocated on its
|
|
46
|
+
* first own write, and lookup results are memoized into the nearest
|
|
47
|
+
* `Map`-bearing layer of the walk — read-only layers (most block scopes) stay
|
|
48
|
+
* allocation-free and share their parent's memoized entries.
|
|
37
49
|
* @template K
|
|
38
50
|
* @template V
|
|
39
51
|
*/
|
|
40
52
|
class StackedMap {
|
|
41
53
|
/**
|
|
42
|
-
*
|
|
54
|
+
* Creates a new map layer on top of an optional parent.
|
|
55
|
+
* @param {StackedMap<K, V>=} parent an optional parent map
|
|
43
56
|
*/
|
|
44
|
-
constructor(
|
|
45
|
-
/** @type {Map<K, InternalCell<V>>} */
|
|
46
|
-
this.map =
|
|
47
|
-
/** @type {
|
|
48
|
-
this.
|
|
49
|
-
this.stack.push(this.map);
|
|
57
|
+
constructor(parent) {
|
|
58
|
+
/** @type {Map<K, InternalCell<V>> | undefined} */
|
|
59
|
+
this.map = undefined;
|
|
60
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
61
|
+
this.parent = parent;
|
|
50
62
|
}
|
|
51
63
|
|
|
52
64
|
/**
|
|
65
|
+
* Stores a value in the current layer, preserving explicit `undefined`
|
|
66
|
+
* values with an internal marker.
|
|
53
67
|
* @param {K} item the key of the element to add
|
|
54
68
|
* @param {V} value the value of the element to add
|
|
55
69
|
* @returns {void}
|
|
56
70
|
*/
|
|
57
71
|
set(item, value) {
|
|
58
|
-
this.map
|
|
72
|
+
(this.map || (this.map = new Map())).set(
|
|
73
|
+
item,
|
|
74
|
+
value === undefined ? UNDEFINED_MARKER : value
|
|
75
|
+
);
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
/**
|
|
79
|
+
* Deletes a key from the current view, either by removing it outright in the
|
|
80
|
+
* root layer or by recording a tombstone in child layers.
|
|
62
81
|
* @param {K} item the item to delete
|
|
63
82
|
* @returns {void}
|
|
64
83
|
*/
|
|
65
84
|
delete(item) {
|
|
66
|
-
if (this.
|
|
67
|
-
this.map.set(item, TOMBSTONE);
|
|
68
|
-
} else {
|
|
85
|
+
if (this.parent !== undefined) {
|
|
86
|
+
(this.map || (this.map = new Map())).set(item, TOMBSTONE);
|
|
87
|
+
} else if (this.map !== undefined) {
|
|
69
88
|
this.map.delete(item);
|
|
70
89
|
}
|
|
71
90
|
}
|
|
72
91
|
|
|
73
92
|
/**
|
|
93
|
+
* Checks whether a key exists in the current scope chain, caching any parent
|
|
94
|
+
* lookup result in the nearest `Map`-bearing layer.
|
|
74
95
|
* @param {K} item the item to test
|
|
75
96
|
* @returns {boolean} true if the item exists in this set
|
|
76
97
|
*/
|
|
77
98
|
has(item) {
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
80
|
-
|
|
99
|
+
const own = this.map;
|
|
100
|
+
if (own !== undefined) {
|
|
101
|
+
const topValue = own.get(item);
|
|
102
|
+
if (topValue !== undefined) {
|
|
103
|
+
return topValue !== TOMBSTONE;
|
|
104
|
+
}
|
|
81
105
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
106
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
107
|
+
let memoTarget = own !== undefined ? this : undefined;
|
|
108
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
109
|
+
let current = this.parent;
|
|
110
|
+
while (current !== undefined) {
|
|
111
|
+
const map = current.map;
|
|
112
|
+
if (map !== undefined) {
|
|
113
|
+
const value = map.get(item);
|
|
85
114
|
if (value !== undefined) {
|
|
86
|
-
|
|
115
|
+
if (memoTarget !== undefined) {
|
|
116
|
+
/** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
|
|
117
|
+
item,
|
|
118
|
+
value
|
|
119
|
+
);
|
|
120
|
+
}
|
|
87
121
|
return value !== TOMBSTONE;
|
|
88
122
|
}
|
|
123
|
+
if (memoTarget === undefined) memoTarget = current;
|
|
89
124
|
}
|
|
90
|
-
|
|
125
|
+
current = current.parent;
|
|
126
|
+
}
|
|
127
|
+
if (memoTarget !== undefined) {
|
|
128
|
+
/** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
|
|
129
|
+
item,
|
|
130
|
+
TOMBSTONE
|
|
131
|
+
);
|
|
91
132
|
}
|
|
92
133
|
return false;
|
|
93
134
|
}
|
|
94
135
|
|
|
95
136
|
/**
|
|
137
|
+
* Returns the visible value for a key, caching parent hits and misses in the
|
|
138
|
+
* nearest `Map`-bearing layer so repeated lookups (from this layer or any
|
|
139
|
+
* sibling below that layer) answer with a single probe.
|
|
96
140
|
* @param {K} item the key of the element to return
|
|
97
141
|
* @returns {Cell<V>} the value of the element
|
|
98
142
|
*/
|
|
99
143
|
get(item) {
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
144
|
+
const own = this.map;
|
|
145
|
+
if (own !== undefined) {
|
|
146
|
+
const topValue = own.get(item);
|
|
147
|
+
if (topValue !== undefined) {
|
|
148
|
+
return topValue === TOMBSTONE || topValue === UNDEFINED_MARKER
|
|
149
|
+
? undefined
|
|
150
|
+
: topValue;
|
|
151
|
+
}
|
|
105
152
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
153
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
154
|
+
let memoTarget = own !== undefined ? this : undefined;
|
|
155
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
156
|
+
let current = this.parent;
|
|
157
|
+
while (current !== undefined) {
|
|
158
|
+
const map = current.map;
|
|
159
|
+
if (map !== undefined) {
|
|
160
|
+
const value = map.get(item);
|
|
109
161
|
if (value !== undefined) {
|
|
110
|
-
|
|
162
|
+
if (memoTarget !== undefined) {
|
|
163
|
+
/** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
|
|
164
|
+
item,
|
|
165
|
+
value
|
|
166
|
+
);
|
|
167
|
+
}
|
|
111
168
|
return value === TOMBSTONE || value === UNDEFINED_MARKER
|
|
112
169
|
? undefined
|
|
113
170
|
: value;
|
|
114
171
|
}
|
|
172
|
+
if (memoTarget === undefined) memoTarget = current;
|
|
115
173
|
}
|
|
116
|
-
|
|
174
|
+
current = current.parent;
|
|
175
|
+
}
|
|
176
|
+
if (memoTarget !== undefined) {
|
|
177
|
+
/** @type {Map<K, InternalCell<V>>} */ (memoTarget.map).set(
|
|
178
|
+
item,
|
|
179
|
+
TOMBSTONE
|
|
180
|
+
);
|
|
117
181
|
}
|
|
118
182
|
}
|
|
119
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Collapses the parent chain into a single concrete map.
|
|
186
|
+
*/
|
|
120
187
|
_compress() {
|
|
121
|
-
if (this.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
188
|
+
if (this.parent === undefined) {
|
|
189
|
+
const map = this.map;
|
|
190
|
+
if (map === undefined) {
|
|
191
|
+
this.map = new Map();
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// a parent-less layer holds tombstones only as memoized misses
|
|
195
|
+
// (deletes remove outright) — drop them from the visible view
|
|
196
|
+
for (const pair of map) {
|
|
197
|
+
if (pair[1] === TOMBSTONE) map.delete(pair[0]);
|
|
198
|
+
}
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
/** @type {StackedMap<K, V>[]} */
|
|
202
|
+
const layers = [];
|
|
203
|
+
/** @type {StackedMap<K, V> | undefined} */
|
|
204
|
+
let current = this;
|
|
205
|
+
do {
|
|
206
|
+
layers.push(current);
|
|
207
|
+
current = current.parent;
|
|
208
|
+
} while (current !== undefined);
|
|
209
|
+
const map = new Map();
|
|
210
|
+
for (let i = layers.length - 1; i >= 0; i--) {
|
|
211
|
+
const layerMap = layers[i].map;
|
|
212
|
+
if (layerMap !== undefined) {
|
|
213
|
+
for (const pair of layerMap) {
|
|
214
|
+
if (pair[1] === TOMBSTONE) {
|
|
215
|
+
map.delete(pair[0]);
|
|
216
|
+
} else {
|
|
217
|
+
map.set(pair[0], pair[1]);
|
|
218
|
+
}
|
|
129
219
|
}
|
|
130
220
|
}
|
|
131
221
|
}
|
|
132
|
-
this.
|
|
222
|
+
this.map = map;
|
|
223
|
+
this.parent = undefined;
|
|
133
224
|
}
|
|
134
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Returns the visible keys as an array after collapsing the stack.
|
|
228
|
+
* @returns {K[]} array of keys
|
|
229
|
+
*/
|
|
135
230
|
asArray() {
|
|
136
231
|
this._compress();
|
|
137
|
-
return [
|
|
232
|
+
return [.../** @type {Map<K, InternalCell<V>>} */ (this.map).keys()];
|
|
138
233
|
}
|
|
139
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Returns the visible keys as a `Set` after collapsing the stack.
|
|
237
|
+
* @returns {Set<K>} set of keys
|
|
238
|
+
*/
|
|
140
239
|
asSet() {
|
|
141
240
|
this._compress();
|
|
142
|
-
return new Set(this.map.keys());
|
|
241
|
+
return new Set(/** @type {Map<K, InternalCell<V>>} */ (this.map).keys());
|
|
143
242
|
}
|
|
144
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Returns visible key/value pairs using the external representation.
|
|
246
|
+
* @returns {[K, Cell<V>][]} array of key/value pairs
|
|
247
|
+
*/
|
|
145
248
|
asPairArray() {
|
|
146
249
|
this._compress();
|
|
147
|
-
return Array.from(
|
|
250
|
+
return Array.from(
|
|
251
|
+
/** @type {Map<K, InternalCell<V>>} */ (this.map).entries(),
|
|
252
|
+
extractPair
|
|
253
|
+
);
|
|
148
254
|
}
|
|
149
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Returns the visible contents as a plain `Map`.
|
|
258
|
+
* @returns {Map<K, Cell<V>>} materialized map
|
|
259
|
+
*/
|
|
150
260
|
asMap() {
|
|
151
261
|
return new Map(this.asPairArray());
|
|
152
262
|
}
|
|
153
263
|
|
|
264
|
+
/**
|
|
265
|
+
* Returns the number of visible keys after collapsing the stack.
|
|
266
|
+
* @returns {number} number of keys
|
|
267
|
+
*/
|
|
154
268
|
get size() {
|
|
155
269
|
this._compress();
|
|
156
|
-
return this.map.size;
|
|
270
|
+
return /** @type {Map<K, InternalCell<V>>} */ (this.map).size;
|
|
157
271
|
}
|
|
158
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Creates a child `StackedMap` that sees the current layers as its parent
|
|
275
|
+
* scope.
|
|
276
|
+
* @returns {StackedMap<K, V>} child map
|
|
277
|
+
*/
|
|
159
278
|
createChild() {
|
|
160
|
-
return new StackedMap(this
|
|
279
|
+
return new StackedMap(this);
|
|
161
280
|
}
|
|
162
281
|
}
|
|
163
282
|
|
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,22 +6,28 @@
|
|
|
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) {
|
|
23
28
|
/** @type {InnerMap<T, V>} */
|
|
24
29
|
this._map = new Map();
|
|
30
|
+
/** @type {number} */
|
|
25
31
|
this.size = 0;
|
|
26
32
|
if (init) {
|
|
27
33
|
for (const tuple of init) {
|
|
@@ -31,6 +37,7 @@ class TupleSet {
|
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
/**
|
|
40
|
+
* Adds a tuple to the set, creating any missing prefix maps along the way.
|
|
34
41
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
35
42
|
* @returns {void}
|
|
36
43
|
*/
|
|
@@ -59,6 +66,7 @@ class TupleSet {
|
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
/**
|
|
69
|
+
* Checks whether the exact tuple is already present in the set.
|
|
62
70
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
63
71
|
* @returns {boolean} true, if the tuple is in the Set
|
|
64
72
|
*/
|
|
@@ -83,6 +91,7 @@ class TupleSet {
|
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
/**
|
|
94
|
+
* Removes a tuple from the set when it is present.
|
|
86
95
|
* @param {[T, V, ...EXPECTED_ANY]} args tuple
|
|
87
96
|
* @returns {void}
|
|
88
97
|
*/
|
|
@@ -109,10 +118,13 @@ class TupleSet {
|
|
|
109
118
|
}
|
|
110
119
|
|
|
111
120
|
/**
|
|
121
|
+
* Iterates over every stored tuple by walking the nested map structure and
|
|
122
|
+
* yielding each complete prefix plus its terminal set value.
|
|
112
123
|
* @returns {Iterator<[T, V, ...EXPECTED_ANY]>} iterator
|
|
113
124
|
*/
|
|
114
125
|
[Symbol.iterator]() {
|
|
115
126
|
/**
|
|
127
|
+
* Iterator type used while traversing nested tuple-prefix maps.
|
|
116
128
|
* @template T, V
|
|
117
129
|
* @typedef {MapIterator<[T, InnerMap<T, V> | Set<V>]>} IteratorStack
|
|
118
130
|
*/
|
|
@@ -127,6 +139,8 @@ class TupleSet {
|
|
|
127
139
|
let currentSetIterator;
|
|
128
140
|
|
|
129
141
|
/**
|
|
142
|
+
* Advances through nested maps until a terminal value set is reached or
|
|
143
|
+
* every remaining branch has been exhausted.
|
|
130
144
|
* @param {IteratorStack<T, V>} it iterator
|
|
131
145
|
* @returns {boolean} result
|
|
132
146
|
*/
|
package/lib/util/WeakTupleMap.js
CHANGED
|
@@ -6,35 +6,49 @@
|
|
|
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
|
+
/**
|
|
49
|
+
* @private
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
38
52
|
this.f = 0;
|
|
39
53
|
/**
|
|
40
54
|
* @private
|
|
@@ -54,6 +68,7 @@ class WeakTupleMap {
|
|
|
54
68
|
}
|
|
55
69
|
|
|
56
70
|
/**
|
|
71
|
+
* Stores a value at the node identified by the provided tuple key.
|
|
57
72
|
* @param {[...K, V]} args tuple
|
|
58
73
|
* @returns {void}
|
|
59
74
|
*/
|
|
@@ -67,6 +82,7 @@ class WeakTupleMap {
|
|
|
67
82
|
}
|
|
68
83
|
|
|
69
84
|
/**
|
|
85
|
+
* Checks whether the exact tuple key has a stored value.
|
|
70
86
|
* @param {K} args tuple
|
|
71
87
|
* @returns {boolean} true, if the tuple is in the Set
|
|
72
88
|
*/
|
|
@@ -81,6 +97,7 @@ class WeakTupleMap {
|
|
|
81
97
|
}
|
|
82
98
|
|
|
83
99
|
/**
|
|
100
|
+
* Returns the value stored for the exact tuple key, if any.
|
|
84
101
|
* @param {K} args tuple
|
|
85
102
|
* @returns {V | undefined} the value
|
|
86
103
|
*/
|
|
@@ -95,6 +112,8 @@ class WeakTupleMap {
|
|
|
95
112
|
}
|
|
96
113
|
|
|
97
114
|
/**
|
|
115
|
+
* Returns an existing value for the tuple or computes, stores, and returns a
|
|
116
|
+
* new one when the tuple is missing.
|
|
98
117
|
* @param {[...K, (...args: K) => V]} args tuple
|
|
99
118
|
* @returns {V} the value
|
|
100
119
|
*/
|
|
@@ -112,6 +131,30 @@ class WeakTupleMap {
|
|
|
112
131
|
}
|
|
113
132
|
|
|
114
133
|
/**
|
|
134
|
+
* Memoizes `compute(thisArg, ...args)` under the tuple key `[compute,
|
|
135
|
+
* ...args]`, computing it on a miss. Equivalent to `provide(compute, ...args,
|
|
136
|
+
* () => compute(thisArg, ...args))` but without allocating that closure (or an
|
|
137
|
+
* extra rest array) on every call — `ModuleGraph#cached` runs this on hot
|
|
138
|
+
* paths where most calls hit the cache and the closure would be pure waste.
|
|
139
|
+
* @param {(thisArg: EXPECTED_ANY, ...args: K) => V} compute computer, also the first key element
|
|
140
|
+
* @param {EXPECTED_ANY} thisArg first argument passed to `compute`
|
|
141
|
+
* @param {K} args remaining key elements, also passed to `compute`
|
|
142
|
+
* @returns {V} the value
|
|
143
|
+
*/
|
|
144
|
+
cachedProvide(compute, thisArg, args) {
|
|
145
|
+
/** @type {WeakTupleMap<K, V>} */
|
|
146
|
+
let node = this._get(/** @type {ArrayElement<K>} */ (compute));
|
|
147
|
+
for (let i = 0; i < args.length; i++) {
|
|
148
|
+
node = node._get(/** @type {ArrayElement<K>} */ (args[i]));
|
|
149
|
+
}
|
|
150
|
+
if (node._hasValue()) return /** @type {V} */ (node._getValue());
|
|
151
|
+
const newValue = compute(thisArg, ...args);
|
|
152
|
+
node._setValue(newValue);
|
|
153
|
+
return newValue;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Removes the value stored for the tuple key without pruning the trie.
|
|
115
158
|
* @param {K} args tuple
|
|
116
159
|
* @returns {void}
|
|
117
160
|
*/
|
|
@@ -126,6 +169,7 @@ class WeakTupleMap {
|
|
|
126
169
|
}
|
|
127
170
|
|
|
128
171
|
/**
|
|
172
|
+
* Clears the stored value and all strong and weak child maps from this node.
|
|
129
173
|
* @returns {void}
|
|
130
174
|
*/
|
|
131
175
|
clear() {
|
|
@@ -135,15 +179,24 @@ class WeakTupleMap {
|
|
|
135
179
|
this.m = undefined;
|
|
136
180
|
}
|
|
137
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Returns the value stored directly on this trie node.
|
|
184
|
+
* @returns {V | undefined} stored value
|
|
185
|
+
*/
|
|
138
186
|
_getValue() {
|
|
139
187
|
return this.v;
|
|
140
188
|
}
|
|
141
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Reports whether this trie node currently stores a value.
|
|
192
|
+
* @returns {boolean} true when a value is present
|
|
193
|
+
*/
|
|
142
194
|
_hasValue() {
|
|
143
195
|
return (this.f & 1) === 1;
|
|
144
196
|
}
|
|
145
197
|
|
|
146
198
|
/**
|
|
199
|
+
* Stores a value directly on this trie node.
|
|
147
200
|
* @param {V} v value
|
|
148
201
|
* @private
|
|
149
202
|
*/
|
|
@@ -152,12 +205,16 @@ class WeakTupleMap {
|
|
|
152
205
|
this.v = v;
|
|
153
206
|
}
|
|
154
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Removes the value stored directly on this trie node.
|
|
210
|
+
*/
|
|
155
211
|
_deleteValue() {
|
|
156
212
|
this.f &= 6;
|
|
157
213
|
this.v = undefined;
|
|
158
214
|
}
|
|
159
215
|
|
|
160
216
|
/**
|
|
217
|
+
* Returns the child node for a tuple element without creating one.
|
|
161
218
|
* @param {ArrayElement<K>} thing thing
|
|
162
219
|
* @returns {WeakTupleMap<K, V> | undefined} thing
|
|
163
220
|
* @private
|
|
@@ -176,6 +233,8 @@ class WeakTupleMap {
|
|
|
176
233
|
}
|
|
177
234
|
|
|
178
235
|
/**
|
|
236
|
+
* Returns the child node for a tuple element, creating and storing it when
|
|
237
|
+
* necessary.
|
|
179
238
|
* @private
|
|
180
239
|
* @param {ArrayElement<K>} thing thing
|
|
181
240
|
* @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
|
*/
|
|
@@ -127,9 +128,9 @@ const fns = {
|
|
|
127
128
|
* const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
128
129
|
*
|
|
129
130
|
* // Find the index of the first element greater than 5
|
|
130
|
-
* const index1 = gt(arr, 5); // index1 ===
|
|
131
|
+
* const index1 = gt(arr, 5); // index1 === 5
|
|
131
132
|
*
|
|
132
|
-
* // Find the index of the
|
|
133
|
+
* // Find the index of the last element less than or equal to 5
|
|
133
134
|
* const index2 = le(arr, 5); // index2 === 4
|
|
134
135
|
* ```
|
|
135
136
|
*/
|
|
@@ -71,8 +71,8 @@ module.exports.getTrimmedIdsAndRange = (
|
|
|
71
71
|
* @returns {string[]} trimmed ids
|
|
72
72
|
*/
|
|
73
73
|
function trimIdsToThoseImported(ids, moduleGraph, dependency) {
|
|
74
|
-
/** @type {string[]} */
|
|
75
|
-
let trimmedIds
|
|
74
|
+
/** @type {string[] | undefined} */
|
|
75
|
+
let trimmedIds;
|
|
76
76
|
let currentExportsInfo = moduleGraph.getExportsInfo(
|
|
77
77
|
/** @type {Module} */ (moduleGraph.getModule(dependency))
|
|
78
78
|
);
|
|
@@ -95,5 +95,5 @@ function trimIdsToThoseImported(ids, moduleGraph, dependency) {
|
|
|
95
95
|
currentExportsInfo = nestedInfo;
|
|
96
96
|
}
|
|
97
97
|
// Never trim to nothing. This can happen for invalid imports (e.g. import { notThere } from "./module", or import { anything } from "./missingModule")
|
|
98
|
-
return trimmedIds.length ? trimmedIds : ids;
|
|
98
|
+
return trimmedIds !== undefined && trimmedIds.length ? trimmedIds : ids;
|
|
99
99
|
}
|