webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/ExportsInfo.js
CHANGED
|
@@ -5,12 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
8
9
|
const { equals } = require("./util/ArrayHelpers");
|
|
9
10
|
const SortableSet = require("./util/SortableSet");
|
|
10
11
|
const makeSerializable = require("./util/makeSerializable");
|
|
11
12
|
const { forEachRuntime } = require("./util/runtime");
|
|
12
13
|
|
|
14
|
+
/** @typedef {import("./Dependency")} Dependency */
|
|
13
15
|
/** @typedef {import("./Dependency").RuntimeSpec} RuntimeSpec */
|
|
16
|
+
/** @typedef {import("./Dependency").ExportsSpecExcludeExports} ExportsSpecExcludeExports */
|
|
17
|
+
/** @typedef {import("./dependencies/HarmonyImportDependency")} HarmonyImportDependency */
|
|
14
18
|
/** @typedef {import("./Module")} Module */
|
|
15
19
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
16
20
|
/** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
|
|
@@ -21,6 +25,32 @@ const { forEachRuntime } = require("./util/runtime");
|
|
|
21
25
|
/** @typedef {typeof UsageState.OnlyPropertiesUsed | typeof UsageState.NoInfo | typeof UsageState.Unknown | typeof UsageState.Used} RuntimeUsageStateType */
|
|
22
26
|
/** @typedef {typeof UsageState.Unused | RuntimeUsageStateType} UsageStateType */
|
|
23
27
|
|
|
28
|
+
/** @typedef {string} ExportInfoName */
|
|
29
|
+
|
|
30
|
+
/** @typedef {Map<string, RuntimeUsageStateType>} UsedInRuntime */
|
|
31
|
+
/** @typedef {{ module: Module, export: ExportInfoName[], deferred: boolean }} TargetItemWithoutConnection */
|
|
32
|
+
/** @typedef {{ module: Module, connection: ModuleGraphConnection, export: ExportInfoName[] | undefined }} TargetItemWithConnection */
|
|
33
|
+
/** @typedef {(target: TargetItemWithConnection) => boolean} ResolveTargetFilter */
|
|
34
|
+
/** @typedef {(module: Module) => boolean} ValidTargetModuleFilter */
|
|
35
|
+
/** @typedef {{ connection: ModuleGraphConnection, export: ExportInfoName[], priority: number }} TargetItem */
|
|
36
|
+
/** @typedef {Map<Dependency | undefined, TargetItem>} Target */
|
|
37
|
+
|
|
38
|
+
/** @typedef {string | null} ExportInfoUsedName */
|
|
39
|
+
/** @typedef {boolean | null} ExportInfoProvided */
|
|
40
|
+
|
|
41
|
+
/** @typedef {Map<ExportInfoName, ExportInfo>} Exports */
|
|
42
|
+
/** @typedef {string | string[] | false} UsedName */
|
|
43
|
+
/** @typedef {Set<ExportInfo>} AlreadyVisitedExportInfo */
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @typedef {object} RestoreProvidedDataExports
|
|
47
|
+
* @property {ExportInfoName} name
|
|
48
|
+
* @property {ExportInfo["provided"]} provided
|
|
49
|
+
* @property {ExportInfo["canMangleProvide"]} canMangleProvide
|
|
50
|
+
* @property {ExportInfo["terminalBinding"]} terminalBinding
|
|
51
|
+
* @property {RestoreProvidedData | undefined} exportsInfo
|
|
52
|
+
*/
|
|
53
|
+
|
|
24
54
|
const UsageState = Object.freeze({
|
|
25
55
|
Unused: /** @type {0} */ (0),
|
|
26
56
|
OnlyPropertiesUsed: /** @type {1} */ (1),
|
|
@@ -34,6 +64,12 @@ const RETURNS_TRUE = () => true;
|
|
|
34
64
|
const CIRCULAR = Symbol("circular target");
|
|
35
65
|
|
|
36
66
|
class RestoreProvidedData {
|
|
67
|
+
/**
|
|
68
|
+
* @param {RestoreProvidedDataExports[]} exports exports
|
|
69
|
+
* @param {ExportInfo["provided"]} otherProvided other provided
|
|
70
|
+
* @param {ExportInfo["canMangleProvide"]} otherCanMangleProvide other can mangle provide
|
|
71
|
+
* @param {ExportInfo["terminalBinding"]} otherTerminalBinding other terminal binding
|
|
72
|
+
*/
|
|
37
73
|
constructor(
|
|
38
74
|
exports,
|
|
39
75
|
otherProvided,
|
|
@@ -71,9 +107,6 @@ makeSerializable(
|
|
|
71
107
|
"RestoreProvidedData"
|
|
72
108
|
);
|
|
73
109
|
|
|
74
|
-
/** @typedef {Map<string, ExportInfo>} Exports */
|
|
75
|
-
/** @typedef {string | string[] | false} UsedName */
|
|
76
|
-
|
|
77
110
|
class ExportsInfo {
|
|
78
111
|
constructor() {
|
|
79
112
|
/** @type {Exports} */
|
|
@@ -124,8 +157,9 @@ class ExportsInfo {
|
|
|
124
157
|
this._sortExports();
|
|
125
158
|
}
|
|
126
159
|
if (this._redirectTo !== undefined) {
|
|
160
|
+
/** @type {Exports} */
|
|
127
161
|
const map = new Map(
|
|
128
|
-
Array.from(this._redirectTo.orderedExports, item => [item.name, item])
|
|
162
|
+
Array.from(this._redirectTo.orderedExports, (item) => [item.name, item])
|
|
129
163
|
);
|
|
130
164
|
for (const [key, value] of this._exports) {
|
|
131
165
|
map.set(key, value);
|
|
@@ -142,8 +176,9 @@ class ExportsInfo {
|
|
|
142
176
|
* @returns {ExportInfo} the export info of unlisted exports
|
|
143
177
|
*/
|
|
144
178
|
get otherExportsInfo() {
|
|
145
|
-
if (this._redirectTo !== undefined)
|
|
179
|
+
if (this._redirectTo !== undefined) {
|
|
146
180
|
return this._redirectTo.otherExportsInfo;
|
|
181
|
+
}
|
|
147
182
|
return this._otherExportsInfo;
|
|
148
183
|
}
|
|
149
184
|
|
|
@@ -153,6 +188,7 @@ class ExportsInfo {
|
|
|
153
188
|
*/
|
|
154
189
|
_sortExportsMap(exports) {
|
|
155
190
|
if (exports.size > 1) {
|
|
191
|
+
/** @type {ExportInfoName[]} */
|
|
156
192
|
const namesInOrder = [];
|
|
157
193
|
for (const entry of exports.values()) {
|
|
158
194
|
namesInOrder.push(entry.name);
|
|
@@ -222,7 +258,7 @@ class ExportsInfo {
|
|
|
222
258
|
}
|
|
223
259
|
|
|
224
260
|
/**
|
|
225
|
-
* @param {
|
|
261
|
+
* @param {ExportInfoName} name export name
|
|
226
262
|
* @returns {ExportInfo} export info for this name
|
|
227
263
|
*/
|
|
228
264
|
getOwnExportInfo(name) {
|
|
@@ -235,14 +271,15 @@ class ExportsInfo {
|
|
|
235
271
|
}
|
|
236
272
|
|
|
237
273
|
/**
|
|
238
|
-
* @param {
|
|
274
|
+
* @param {ExportInfoName} name export name
|
|
239
275
|
* @returns {ExportInfo} export info for this name
|
|
240
276
|
*/
|
|
241
277
|
getExportInfo(name) {
|
|
242
278
|
const info = this._exports.get(name);
|
|
243
279
|
if (info !== undefined) return info;
|
|
244
|
-
if (this._redirectTo !== undefined)
|
|
280
|
+
if (this._redirectTo !== undefined) {
|
|
245
281
|
return this._redirectTo.getExportInfo(name);
|
|
282
|
+
}
|
|
246
283
|
const newInfo = new ExportInfo(name, this._otherExportsInfo);
|
|
247
284
|
this._exports.set(name, newInfo);
|
|
248
285
|
this._exportsAreOrdered = false;
|
|
@@ -250,19 +287,20 @@ class ExportsInfo {
|
|
|
250
287
|
}
|
|
251
288
|
|
|
252
289
|
/**
|
|
253
|
-
* @param {
|
|
290
|
+
* @param {ExportInfoName} name export name
|
|
254
291
|
* @returns {ExportInfo} export info for this name
|
|
255
292
|
*/
|
|
256
293
|
getReadOnlyExportInfo(name) {
|
|
257
294
|
const info = this._exports.get(name);
|
|
258
295
|
if (info !== undefined) return info;
|
|
259
|
-
if (this._redirectTo !== undefined)
|
|
296
|
+
if (this._redirectTo !== undefined) {
|
|
260
297
|
return this._redirectTo.getReadOnlyExportInfo(name);
|
|
298
|
+
}
|
|
261
299
|
return this._otherExportsInfo;
|
|
262
300
|
}
|
|
263
301
|
|
|
264
302
|
/**
|
|
265
|
-
* @param {
|
|
303
|
+
* @param {ExportInfoName[]} name export name
|
|
266
304
|
* @returns {ExportInfo | undefined} export info for this name
|
|
267
305
|
*/
|
|
268
306
|
getReadOnlyExportInfoRecursive(name) {
|
|
@@ -273,7 +311,7 @@ class ExportsInfo {
|
|
|
273
311
|
}
|
|
274
312
|
|
|
275
313
|
/**
|
|
276
|
-
* @param {
|
|
314
|
+
* @param {ExportInfoName[]=} name the export name
|
|
277
315
|
* @returns {ExportsInfo | undefined} the nested exports info
|
|
278
316
|
*/
|
|
279
317
|
getNestedExportsInfo(name) {
|
|
@@ -287,8 +325,8 @@ class ExportsInfo {
|
|
|
287
325
|
|
|
288
326
|
/**
|
|
289
327
|
* @param {boolean=} canMangle true, if exports can still be mangled (defaults to false)
|
|
290
|
-
* @param {
|
|
291
|
-
* @param {
|
|
328
|
+
* @param {ExportsSpecExcludeExports=} excludeExports list of unaffected exports
|
|
329
|
+
* @param {Dependency=} targetKey use this as key for the target
|
|
292
330
|
* @param {ModuleGraphConnection=} targetModule set this module as target
|
|
293
331
|
* @param {number=} priority priority
|
|
294
332
|
* @returns {boolean} true, if this call changed something
|
|
@@ -320,7 +358,8 @@ class ExportsInfo {
|
|
|
320
358
|
if (targetKey) {
|
|
321
359
|
exportInfo.setTarget(
|
|
322
360
|
targetKey,
|
|
323
|
-
/** @type {ModuleGraphConnection} */
|
|
361
|
+
/** @type {ModuleGraphConnection} */
|
|
362
|
+
(targetModule),
|
|
324
363
|
[exportInfo.name],
|
|
325
364
|
-1
|
|
326
365
|
);
|
|
@@ -380,7 +419,7 @@ class ExportsInfo {
|
|
|
380
419
|
} else {
|
|
381
420
|
if (
|
|
382
421
|
this._otherExportsInfo.setUsedConditionally(
|
|
383
|
-
used => used < UsageState.Unknown,
|
|
422
|
+
(used) => used < UsageState.Unknown,
|
|
384
423
|
UsageState.Unknown,
|
|
385
424
|
runtime
|
|
386
425
|
)
|
|
@@ -443,7 +482,7 @@ class ExportsInfo {
|
|
|
443
482
|
*/
|
|
444
483
|
setUsedForSideEffectsOnly(runtime) {
|
|
445
484
|
return this._sideEffectsOnlyInfo.setUsedConditionally(
|
|
446
|
-
used => used === UsageState.Unused,
|
|
485
|
+
(used) => used === UsageState.Unused,
|
|
447
486
|
UsageState.Used,
|
|
448
487
|
runtime
|
|
449
488
|
);
|
|
@@ -475,27 +514,27 @@ class ExportsInfo {
|
|
|
475
514
|
*/
|
|
476
515
|
isModuleUsed(runtime) {
|
|
477
516
|
if (this.isUsed(runtime)) return true;
|
|
478
|
-
if (this._sideEffectsOnlyInfo.getUsed(runtime) !== UsageState.Unused)
|
|
517
|
+
if (this._sideEffectsOnlyInfo.getUsed(runtime) !== UsageState.Unused) {
|
|
479
518
|
return true;
|
|
519
|
+
}
|
|
480
520
|
return false;
|
|
481
521
|
}
|
|
482
522
|
|
|
483
523
|
/**
|
|
484
524
|
* @param {RuntimeSpec} runtime the runtime
|
|
485
|
-
* @returns {SortableSet<
|
|
525
|
+
* @returns {SortableSet<ExportInfoName> | boolean | null} set of used exports, or true (when namespace object is used), or false (when unused), or null (when unknown)
|
|
486
526
|
*/
|
|
487
527
|
getUsedExports(runtime) {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
case UsageState.Used:
|
|
496
|
-
return true;
|
|
497
|
-
}
|
|
528
|
+
switch (this._otherExportsInfo.getUsed(runtime)) {
|
|
529
|
+
case UsageState.NoInfo:
|
|
530
|
+
return null;
|
|
531
|
+
case UsageState.Unknown:
|
|
532
|
+
case UsageState.OnlyPropertiesUsed:
|
|
533
|
+
case UsageState.Used:
|
|
534
|
+
return true;
|
|
498
535
|
}
|
|
536
|
+
|
|
537
|
+
/** @type {ExportInfoName[]} */
|
|
499
538
|
const array = [];
|
|
500
539
|
if (!this._exportsAreOrdered) this._sortExports();
|
|
501
540
|
for (const exportInfo of this._exports.values()) {
|
|
@@ -527,24 +566,23 @@ class ExportsInfo {
|
|
|
527
566
|
return false;
|
|
528
567
|
}
|
|
529
568
|
}
|
|
530
|
-
return /** @type {SortableSet<
|
|
569
|
+
return /** @type {SortableSet<ExportInfoName>} */ (new SortableSet(array));
|
|
531
570
|
}
|
|
532
571
|
|
|
533
572
|
/**
|
|
534
|
-
* @returns {null | true |
|
|
573
|
+
* @returns {null | true | ExportInfoName[]} list of exports when known
|
|
535
574
|
*/
|
|
536
575
|
getProvidedExports() {
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
case true:
|
|
545
|
-
return true;
|
|
546
|
-
}
|
|
576
|
+
switch (this._otherExportsInfo.provided) {
|
|
577
|
+
case undefined:
|
|
578
|
+
return null;
|
|
579
|
+
case null:
|
|
580
|
+
return true;
|
|
581
|
+
case true:
|
|
582
|
+
return true;
|
|
547
583
|
}
|
|
584
|
+
|
|
585
|
+
/** @type {ExportInfoName[]} */
|
|
548
586
|
const array = [];
|
|
549
587
|
if (!this._exportsAreOrdered) this._sortExports();
|
|
550
588
|
for (const exportInfo of this._exports.values()) {
|
|
@@ -597,7 +635,7 @@ class ExportsInfo {
|
|
|
597
635
|
}
|
|
598
636
|
|
|
599
637
|
/**
|
|
600
|
-
* @param {
|
|
638
|
+
* @param {ExportInfoName | ExportInfoName[]} name the name of the export
|
|
601
639
|
* @returns {boolean | undefined | null} if the export is provided
|
|
602
640
|
*/
|
|
603
641
|
isExportProvided(name) {
|
|
@@ -651,14 +689,15 @@ class ExportsInfo {
|
|
|
651
689
|
return false;
|
|
652
690
|
}
|
|
653
691
|
for (const exportInfo of this.ownedExports) {
|
|
654
|
-
if (exportInfo.getUsed(runtimeA) !== exportInfo.getUsed(runtimeB))
|
|
692
|
+
if (exportInfo.getUsed(runtimeA) !== exportInfo.getUsed(runtimeB)) {
|
|
655
693
|
return false;
|
|
694
|
+
}
|
|
656
695
|
}
|
|
657
696
|
return true;
|
|
658
697
|
}
|
|
659
698
|
|
|
660
699
|
/**
|
|
661
|
-
* @param {
|
|
700
|
+
* @param {ExportInfoName | ExportInfoName[]} name export name
|
|
662
701
|
* @param {RuntimeSpec} runtime check usage for this runtime only
|
|
663
702
|
* @returns {UsageStateType} usage status
|
|
664
703
|
*/
|
|
@@ -676,7 +715,7 @@ class ExportsInfo {
|
|
|
676
715
|
}
|
|
677
716
|
|
|
678
717
|
/**
|
|
679
|
-
* @param {
|
|
718
|
+
* @param {ExportInfoName | ExportInfoName[]} name the export name
|
|
680
719
|
* @param {RuntimeSpec} runtime check usage for this runtime only
|
|
681
720
|
* @returns {UsedName} the used name
|
|
682
721
|
*/
|
|
@@ -691,7 +730,7 @@ class ExportsInfo {
|
|
|
691
730
|
const x = info.getUsedName(name[0], runtime);
|
|
692
731
|
if (x === false) return false;
|
|
693
732
|
const arr =
|
|
694
|
-
/** @type {
|
|
733
|
+
/** @type {ExportInfoName[]} */
|
|
695
734
|
(x === name[0] && name.length === 1 ? name : [x]);
|
|
696
735
|
if (name.length === 1) {
|
|
697
736
|
return arr;
|
|
@@ -702,9 +741,9 @@ class ExportsInfo {
|
|
|
702
741
|
) {
|
|
703
742
|
const nested = info.exportsInfo.getUsedName(name.slice(1), runtime);
|
|
704
743
|
if (!nested) return false;
|
|
705
|
-
return arr.
|
|
744
|
+
return [...arr, ...(Array.isArray(nested) ? nested : [nested])];
|
|
706
745
|
}
|
|
707
|
-
return arr
|
|
746
|
+
return [...arr, ...name.slice(1)];
|
|
708
747
|
}
|
|
709
748
|
const info = this.getReadOnlyExportInfo(name);
|
|
710
749
|
const usedName = info.getUsedName(name, runtime);
|
|
@@ -748,6 +787,7 @@ class ExportsInfo {
|
|
|
748
787
|
const otherProvided = this._otherExportsInfo.provided;
|
|
749
788
|
const otherCanMangleProvide = this._otherExportsInfo.canMangleProvide;
|
|
750
789
|
const otherTerminalBinding = this._otherExportsInfo.terminalBinding;
|
|
790
|
+
/** @type {RestoreProvidedDataExports[]} */
|
|
751
791
|
const exports = [];
|
|
752
792
|
for (const exportInfo of this.orderedExports) {
|
|
753
793
|
if (
|
|
@@ -777,7 +817,7 @@ class ExportsInfo {
|
|
|
777
817
|
}
|
|
778
818
|
|
|
779
819
|
/**
|
|
780
|
-
* @param {
|
|
820
|
+
* @param {RestoreProvidedData} data data
|
|
781
821
|
*/
|
|
782
822
|
restoreProvided({
|
|
783
823
|
otherProvided,
|
|
@@ -809,21 +849,17 @@ class ExportsInfo {
|
|
|
809
849
|
}
|
|
810
850
|
}
|
|
811
851
|
|
|
812
|
-
/** @typedef {{ module: Module, export: string[] }} TargetItemWithoutConnection */
|
|
813
|
-
/** @typedef {{ module: Module, connection: ModuleGraphConnection, export: string[] | undefined }} TargetItem */
|
|
814
|
-
/** @typedef {Map<any, { connection: ModuleGraphConnection | null, export: string[], priority: number }>} Target */
|
|
815
|
-
|
|
816
852
|
class ExportInfo {
|
|
817
853
|
/**
|
|
818
|
-
* @param {
|
|
854
|
+
* @param {ExportInfoName | null} name the original name of the export
|
|
819
855
|
* @param {ExportInfo=} initFrom init values from this ExportInfo
|
|
820
856
|
*/
|
|
821
857
|
constructor(name, initFrom) {
|
|
822
|
-
/** @type {
|
|
823
|
-
this.name = name;
|
|
858
|
+
/** @type {ExportInfoName} */
|
|
859
|
+
this.name = /** @type {ExportInfoName} */ (name);
|
|
824
860
|
/**
|
|
825
861
|
* @private
|
|
826
|
-
* @type {
|
|
862
|
+
* @type {ExportInfoUsedName}
|
|
827
863
|
*/
|
|
828
864
|
this._usedName = initFrom ? initFrom._usedName : null;
|
|
829
865
|
/**
|
|
@@ -833,7 +869,7 @@ class ExportInfo {
|
|
|
833
869
|
this._globalUsed = initFrom ? initFrom._globalUsed : undefined;
|
|
834
870
|
/**
|
|
835
871
|
* @private
|
|
836
|
-
* @type {
|
|
872
|
+
* @type {UsedInRuntime | undefined}
|
|
837
873
|
*/
|
|
838
874
|
this._usedInRuntime =
|
|
839
875
|
initFrom && initFrom._usedInRuntime
|
|
@@ -851,7 +887,7 @@ class ExportInfo {
|
|
|
851
887
|
* false: it is not provided
|
|
852
888
|
* null: only the runtime knows if it is provided
|
|
853
889
|
* undefined: it was not determined if it is provided
|
|
854
|
-
* @type {
|
|
890
|
+
* @type {ExportInfoProvided | undefined}
|
|
855
891
|
*/
|
|
856
892
|
this.provided = initFrom ? initFrom.provided : undefined;
|
|
857
893
|
/**
|
|
@@ -896,7 +932,7 @@ class ExportInfo {
|
|
|
896
932
|
// TODO webpack 5 remove
|
|
897
933
|
/**
|
|
898
934
|
* @private
|
|
899
|
-
* @param {
|
|
935
|
+
* @param {EXPECTED_ANY} v v
|
|
900
936
|
*/
|
|
901
937
|
set used(v) {
|
|
902
938
|
throw new Error("REMOVED");
|
|
@@ -911,7 +947,7 @@ class ExportInfo {
|
|
|
911
947
|
// TODO webpack 5 remove
|
|
912
948
|
/**
|
|
913
949
|
* @private
|
|
914
|
-
* @param {
|
|
950
|
+
* @param {EXPECTED_ANY} v v
|
|
915
951
|
*/
|
|
916
952
|
set usedName(v) {
|
|
917
953
|
throw new Error("REMOVED");
|
|
@@ -952,7 +988,7 @@ class ExportInfo {
|
|
|
952
988
|
let changed = false;
|
|
953
989
|
if (
|
|
954
990
|
this.setUsedConditionally(
|
|
955
|
-
used => used < UsageState.Unknown,
|
|
991
|
+
(used) => used < UsageState.Unknown,
|
|
956
992
|
UsageState.Unknown,
|
|
957
993
|
runtime
|
|
958
994
|
)
|
|
@@ -996,7 +1032,7 @@ class ExportInfo {
|
|
|
996
1032
|
}
|
|
997
1033
|
|
|
998
1034
|
/**
|
|
999
|
-
* @param {
|
|
1035
|
+
* @param {(condition: UsageStateType) => boolean} condition compare with old value
|
|
1000
1036
|
* @param {UsageStateType} newValue set when condition is true
|
|
1001
1037
|
* @param {RuntimeSpec} runtime only apply to this runtime
|
|
1002
1038
|
* @returns {boolean} true when something has changed
|
|
@@ -1014,24 +1050,28 @@ class ExportInfo {
|
|
|
1014
1050
|
} else if (this._usedInRuntime === undefined) {
|
|
1015
1051
|
if (newValue !== UsageState.Unused && condition(UsageState.Unused)) {
|
|
1016
1052
|
this._usedInRuntime = new Map();
|
|
1017
|
-
forEachRuntime(runtime, runtime =>
|
|
1018
|
-
|
|
1053
|
+
forEachRuntime(runtime, (runtime) =>
|
|
1054
|
+
/** @type {UsedInRuntime} */
|
|
1055
|
+
(this._usedInRuntime).set(/** @type {string} */ (runtime), newValue)
|
|
1019
1056
|
);
|
|
1020
1057
|
return true;
|
|
1021
1058
|
}
|
|
1022
1059
|
} else {
|
|
1023
1060
|
let changed = false;
|
|
1024
|
-
forEachRuntime(runtime,
|
|
1025
|
-
const runtime = /** @type {string} */ (
|
|
1061
|
+
forEachRuntime(runtime, (runtime_) => {
|
|
1062
|
+
const runtime = /** @type {string} */ (runtime_);
|
|
1063
|
+
const usedInRuntime =
|
|
1064
|
+
/** @type {UsedInRuntime} */
|
|
1065
|
+
(this._usedInRuntime);
|
|
1026
1066
|
let oldValue =
|
|
1027
1067
|
/** @type {UsageStateType} */
|
|
1028
|
-
(
|
|
1068
|
+
(usedInRuntime.get(runtime));
|
|
1029
1069
|
if (oldValue === undefined) oldValue = UsageState.Unused;
|
|
1030
1070
|
if (newValue !== oldValue && condition(oldValue)) {
|
|
1031
1071
|
if (newValue === UsageState.Unused) {
|
|
1032
|
-
|
|
1072
|
+
usedInRuntime.delete(runtime);
|
|
1033
1073
|
} else {
|
|
1034
|
-
|
|
1074
|
+
usedInRuntime.set(runtime, newValue);
|
|
1035
1075
|
}
|
|
1036
1076
|
changed = true;
|
|
1037
1077
|
}
|
|
@@ -1058,24 +1098,28 @@ class ExportInfo {
|
|
|
1058
1098
|
} else if (this._usedInRuntime === undefined) {
|
|
1059
1099
|
if (newValue !== UsageState.Unused) {
|
|
1060
1100
|
this._usedInRuntime = new Map();
|
|
1061
|
-
forEachRuntime(runtime, runtime =>
|
|
1062
|
-
|
|
1101
|
+
forEachRuntime(runtime, (runtime) =>
|
|
1102
|
+
/** @type {UsedInRuntime} */
|
|
1103
|
+
(this._usedInRuntime).set(/** @type {string} */ (runtime), newValue)
|
|
1063
1104
|
);
|
|
1064
1105
|
return true;
|
|
1065
1106
|
}
|
|
1066
1107
|
} else {
|
|
1067
1108
|
let changed = false;
|
|
1068
|
-
forEachRuntime(runtime, _runtime => {
|
|
1109
|
+
forEachRuntime(runtime, (_runtime) => {
|
|
1069
1110
|
const runtime = /** @type {string} */ (_runtime);
|
|
1111
|
+
const usedInRuntime =
|
|
1112
|
+
/** @type {UsedInRuntime} */
|
|
1113
|
+
(this._usedInRuntime);
|
|
1070
1114
|
let oldValue =
|
|
1071
1115
|
/** @type {UsageStateType} */
|
|
1072
|
-
(
|
|
1116
|
+
(usedInRuntime.get(runtime));
|
|
1073
1117
|
if (oldValue === undefined) oldValue = UsageState.Unused;
|
|
1074
1118
|
if (newValue !== oldValue) {
|
|
1075
1119
|
if (newValue === UsageState.Unused) {
|
|
1076
|
-
|
|
1120
|
+
usedInRuntime.delete(runtime);
|
|
1077
1121
|
} else {
|
|
1078
|
-
|
|
1122
|
+
usedInRuntime.set(runtime, newValue);
|
|
1079
1123
|
}
|
|
1080
1124
|
changed = true;
|
|
1081
1125
|
}
|
|
@@ -1089,7 +1133,7 @@ class ExportInfo {
|
|
|
1089
1133
|
}
|
|
1090
1134
|
|
|
1091
1135
|
/**
|
|
1092
|
-
* @param {
|
|
1136
|
+
* @param {Dependency} key the key
|
|
1093
1137
|
* @returns {boolean} true, if something has changed
|
|
1094
1138
|
*/
|
|
1095
1139
|
unsetTarget(key) {
|
|
@@ -1102,9 +1146,9 @@ class ExportInfo {
|
|
|
1102
1146
|
}
|
|
1103
1147
|
|
|
1104
1148
|
/**
|
|
1105
|
-
* @param {
|
|
1149
|
+
* @param {Dependency} key the key
|
|
1106
1150
|
* @param {ModuleGraphConnection} connection the target module if a single one
|
|
1107
|
-
* @param {
|
|
1151
|
+
* @param {ExportInfoName[] | null=} exportName the exported name
|
|
1108
1152
|
* @param {number=} priority priority
|
|
1109
1153
|
* @returns {boolean} true, if something has changed
|
|
1110
1154
|
*/
|
|
@@ -1114,7 +1158,7 @@ class ExportInfo {
|
|
|
1114
1158
|
this._target = new Map();
|
|
1115
1159
|
this._target.set(key, {
|
|
1116
1160
|
connection,
|
|
1117
|
-
export: /** @type {
|
|
1161
|
+
export: /** @type {ExportInfoName[]} */ (exportName),
|
|
1118
1162
|
priority
|
|
1119
1163
|
});
|
|
1120
1164
|
return true;
|
|
@@ -1124,7 +1168,7 @@ class ExportInfo {
|
|
|
1124
1168
|
if (oldTarget === null && !connection) return false;
|
|
1125
1169
|
this._target.set(key, {
|
|
1126
1170
|
connection,
|
|
1127
|
-
export: /** @type {
|
|
1171
|
+
export: /** @type {ExportInfoName[]} */ (exportName),
|
|
1128
1172
|
priority
|
|
1129
1173
|
});
|
|
1130
1174
|
this._maxTarget = undefined;
|
|
@@ -1138,7 +1182,7 @@ class ExportInfo {
|
|
|
1138
1182
|
: oldTarget.export)
|
|
1139
1183
|
) {
|
|
1140
1184
|
oldTarget.connection = connection;
|
|
1141
|
-
oldTarget.export = /** @type {
|
|
1185
|
+
oldTarget.export = /** @type {ExportInfoName[]} */ (exportName);
|
|
1142
1186
|
oldTarget.priority = priority;
|
|
1143
1187
|
this._maxTarget = undefined;
|
|
1144
1188
|
return true;
|
|
@@ -1202,8 +1246,9 @@ class ExportInfo {
|
|
|
1202
1246
|
}
|
|
1203
1247
|
} else if (
|
|
1204
1248
|
runtime !== undefined &&
|
|
1205
|
-
|
|
1206
|
-
runtime =>
|
|
1249
|
+
[...runtime].every(
|
|
1250
|
+
(runtime) =>
|
|
1251
|
+
!(/** @type {UsedInRuntime} */ (this._usedInRuntime).has(runtime))
|
|
1207
1252
|
)
|
|
1208
1253
|
) {
|
|
1209
1254
|
return false;
|
|
@@ -1232,7 +1277,7 @@ class ExportInfo {
|
|
|
1232
1277
|
|
|
1233
1278
|
/**
|
|
1234
1279
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1235
|
-
* @param {
|
|
1280
|
+
* @param {ResolveTargetFilter} resolveTargetFilter filter function to further resolve target
|
|
1236
1281
|
* @returns {ExportInfo | ExportsInfo | undefined} the terminal binding export(s) info if known
|
|
1237
1282
|
*/
|
|
1238
1283
|
getTerminalBinding(moduleGraph, resolveTargetFilter = RETURNS_TRUE) {
|
|
@@ -1250,8 +1295,9 @@ class ExportInfo {
|
|
|
1250
1295
|
|
|
1251
1296
|
_getMaxTarget() {
|
|
1252
1297
|
if (this._maxTarget !== undefined) return this._maxTarget;
|
|
1253
|
-
if (/** @type {Target} */ (this._target).size <= 1)
|
|
1298
|
+
if (/** @type {Target} */ (this._target).size <= 1) {
|
|
1254
1299
|
return (this._maxTarget = this._target);
|
|
1300
|
+
}
|
|
1255
1301
|
let maxPriority = -Infinity;
|
|
1256
1302
|
let minPriority = Infinity;
|
|
1257
1303
|
for (const { priority } of /** @type {Target} */ (this._target).values()) {
|
|
@@ -1262,6 +1308,7 @@ class ExportInfo {
|
|
|
1262
1308
|
if (maxPriority === minPriority) return (this._maxTarget = this._target);
|
|
1263
1309
|
|
|
1264
1310
|
// This is an edge case
|
|
1311
|
+
/** @type {Target} */
|
|
1265
1312
|
const map = new Map();
|
|
1266
1313
|
for (const [key, value] of /** @type {Target} */ (this._target)) {
|
|
1267
1314
|
if (maxPriority === value.priority) {
|
|
@@ -1274,7 +1321,7 @@ class ExportInfo {
|
|
|
1274
1321
|
|
|
1275
1322
|
/**
|
|
1276
1323
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1277
|
-
* @param {
|
|
1324
|
+
* @param {ValidTargetModuleFilter} validTargetModuleFilter a valid target module
|
|
1278
1325
|
* @returns {TargetItemWithoutConnection | null | undefined | false} the target, undefined when there is no target, false when no target is valid
|
|
1279
1326
|
*/
|
|
1280
1327
|
findTarget(moduleGraph, validTargetModuleFilter) {
|
|
@@ -1283,8 +1330,8 @@ class ExportInfo {
|
|
|
1283
1330
|
|
|
1284
1331
|
/**
|
|
1285
1332
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1286
|
-
* @param {
|
|
1287
|
-
* @param {
|
|
1333
|
+
* @param {ValidTargetModuleFilter} validTargetModuleFilter a valid target module
|
|
1334
|
+
* @param {AlreadyVisitedExportInfo} alreadyVisited set of already visited export info to avoid circular references
|
|
1288
1335
|
* @returns {TargetItemWithoutConnection | null | undefined | false} the target, undefined when there is no target, false when no target is valid
|
|
1289
1336
|
*/
|
|
1290
1337
|
_findTarget(moduleGraph, validTargetModuleFilter, alreadyVisited) {
|
|
@@ -1296,7 +1343,15 @@ class ExportInfo {
|
|
|
1296
1343
|
/** @type {TargetItemWithoutConnection} */
|
|
1297
1344
|
let target = {
|
|
1298
1345
|
module: rawTarget.connection.module,
|
|
1299
|
-
export: rawTarget.export
|
|
1346
|
+
export: rawTarget.export,
|
|
1347
|
+
deferred: Boolean(
|
|
1348
|
+
rawTarget.connection.dependency &&
|
|
1349
|
+
ImportPhaseUtils.isDefer(
|
|
1350
|
+
/** @type {HarmonyImportDependency} */ (
|
|
1351
|
+
rawTarget.connection.dependency
|
|
1352
|
+
).phase
|
|
1353
|
+
)
|
|
1354
|
+
)
|
|
1300
1355
|
};
|
|
1301
1356
|
for (;;) {
|
|
1302
1357
|
if (validTargetModuleFilter(target.module)) return target;
|
|
@@ -1315,8 +1370,9 @@ class ExportInfo {
|
|
|
1315
1370
|
target = {
|
|
1316
1371
|
module: newTarget.module,
|
|
1317
1372
|
export: newTarget.export
|
|
1318
|
-
? newTarget.export
|
|
1319
|
-
: target.export.slice(1)
|
|
1373
|
+
? [...newTarget.export, ...target.export.slice(1)]
|
|
1374
|
+
: target.export.slice(1),
|
|
1375
|
+
deferred: newTarget.deferred
|
|
1320
1376
|
};
|
|
1321
1377
|
}
|
|
1322
1378
|
}
|
|
@@ -1324,8 +1380,8 @@ class ExportInfo {
|
|
|
1324
1380
|
|
|
1325
1381
|
/**
|
|
1326
1382
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1327
|
-
* @param {
|
|
1328
|
-
* @returns {
|
|
1383
|
+
* @param {ResolveTargetFilter} resolveTargetFilter filter function to further resolve target
|
|
1384
|
+
* @returns {TargetItemWithConnection | undefined} the target
|
|
1329
1385
|
*/
|
|
1330
1386
|
getTarget(moduleGraph, resolveTargetFilter = RETURNS_TRUE) {
|
|
1331
1387
|
const result = this._getTarget(moduleGraph, resolveTargetFilter, undefined);
|
|
@@ -1335,15 +1391,15 @@ class ExportInfo {
|
|
|
1335
1391
|
|
|
1336
1392
|
/**
|
|
1337
1393
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1338
|
-
* @param {
|
|
1339
|
-
* @param {
|
|
1340
|
-
* @returns {
|
|
1394
|
+
* @param {ResolveTargetFilter} resolveTargetFilter filter function to further resolve target
|
|
1395
|
+
* @param {AlreadyVisitedExportInfo | undefined} alreadyVisited set of already visited export info to avoid circular references
|
|
1396
|
+
* @returns {TargetItemWithConnection | CIRCULAR | undefined} the target
|
|
1341
1397
|
*/
|
|
1342
1398
|
_getTarget(moduleGraph, resolveTargetFilter, alreadyVisited) {
|
|
1343
1399
|
/**
|
|
1344
|
-
* @param {TargetItem | null} inputTarget unresolved target
|
|
1345
|
-
* @param {
|
|
1346
|
-
* @returns {
|
|
1400
|
+
* @param {TargetItem | undefined | null} inputTarget unresolved target
|
|
1401
|
+
* @param {AlreadyVisitedExportInfo} alreadyVisited set of already visited export info to avoid circular references
|
|
1402
|
+
* @returns {TargetItemWithConnection | CIRCULAR | null} resolved target
|
|
1347
1403
|
*/
|
|
1348
1404
|
const resolveTarget = (inputTarget, alreadyVisited) => {
|
|
1349
1405
|
if (!inputTarget) return null;
|
|
@@ -1354,7 +1410,7 @@ class ExportInfo {
|
|
|
1354
1410
|
export: undefined
|
|
1355
1411
|
};
|
|
1356
1412
|
}
|
|
1357
|
-
/** @type {
|
|
1413
|
+
/** @type {TargetItemWithConnection} */
|
|
1358
1414
|
let target = {
|
|
1359
1415
|
module: inputTarget.connection.module,
|
|
1360
1416
|
connection: inputTarget.connection,
|
|
@@ -1365,7 +1421,7 @@ class ExportInfo {
|
|
|
1365
1421
|
for (;;) {
|
|
1366
1422
|
const exportsInfo = moduleGraph.getExportsInfo(target.module);
|
|
1367
1423
|
const exportInfo = exportsInfo.getExportInfo(
|
|
1368
|
-
/** @type {NonNullable<
|
|
1424
|
+
/** @type {NonNullable<TargetItemWithConnection["export"]>} */
|
|
1369
1425
|
(target.export)[0]
|
|
1370
1426
|
);
|
|
1371
1427
|
if (!exportInfo) return target;
|
|
@@ -1378,7 +1434,7 @@ class ExportInfo {
|
|
|
1378
1434
|
if (newTarget === CIRCULAR) return CIRCULAR;
|
|
1379
1435
|
if (!newTarget) return target;
|
|
1380
1436
|
if (
|
|
1381
|
-
/** @type {NonNullable<
|
|
1437
|
+
/** @type {NonNullable<TargetItemWithConnection["export"]>} */
|
|
1382
1438
|
(target.export).length === 1
|
|
1383
1439
|
) {
|
|
1384
1440
|
target = newTarget;
|
|
@@ -1388,11 +1444,12 @@ class ExportInfo {
|
|
|
1388
1444
|
module: newTarget.module,
|
|
1389
1445
|
connection: newTarget.connection,
|
|
1390
1446
|
export: newTarget.export
|
|
1391
|
-
?
|
|
1392
|
-
|
|
1447
|
+
? [
|
|
1448
|
+
...newTarget.export,
|
|
1449
|
+
.../** @type {NonNullable<TargetItemWithConnection["export"]>} */
|
|
1393
1450
|
(target.export).slice(1)
|
|
1394
|
-
|
|
1395
|
-
: /** @type {NonNullable<
|
|
1451
|
+
]
|
|
1452
|
+
: /** @type {NonNullable<TargetItemWithConnection["export"]>} */
|
|
1396
1453
|
(target.export).slice(1)
|
|
1397
1454
|
};
|
|
1398
1455
|
}
|
|
@@ -1423,8 +1480,9 @@ class ExportInfo {
|
|
|
1423
1480
|
if (
|
|
1424
1481
|
target.export &&
|
|
1425
1482
|
!equals(/** @type {ArrayLike<string>} */ (t.export), target.export)
|
|
1426
|
-
)
|
|
1483
|
+
) {
|
|
1427
1484
|
return;
|
|
1485
|
+
}
|
|
1428
1486
|
result = values.next();
|
|
1429
1487
|
}
|
|
1430
1488
|
return target;
|
|
@@ -1433,17 +1491,20 @@ class ExportInfo {
|
|
|
1433
1491
|
/**
|
|
1434
1492
|
* Move the target forward as long resolveTargetFilter is fulfilled
|
|
1435
1493
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
1436
|
-
* @param {
|
|
1437
|
-
* @param {
|
|
1438
|
-
* @returns {
|
|
1494
|
+
* @param {ResolveTargetFilter} resolveTargetFilter filter function to further resolve target
|
|
1495
|
+
* @param {(target: TargetItemWithConnection) => ModuleGraphConnection=} updateOriginalConnection updates the original connection instead of using the target connection
|
|
1496
|
+
* @returns {TargetItemWithConnection | undefined} the resolved target when moved
|
|
1439
1497
|
*/
|
|
1440
1498
|
moveTarget(moduleGraph, resolveTargetFilter, updateOriginalConnection) {
|
|
1441
1499
|
const target = this._getTarget(moduleGraph, resolveTargetFilter, undefined);
|
|
1442
1500
|
if (target === CIRCULAR) return;
|
|
1443
1501
|
if (!target) return;
|
|
1444
1502
|
const originalTarget =
|
|
1445
|
-
/** @type {
|
|
1446
|
-
(
|
|
1503
|
+
/** @type {TargetItem} */
|
|
1504
|
+
(
|
|
1505
|
+
/** @type {Target} */
|
|
1506
|
+
(this._getMaxTarget()).values().next().value
|
|
1507
|
+
);
|
|
1447
1508
|
if (
|
|
1448
1509
|
originalTarget.connection === target.connection &&
|
|
1449
1510
|
originalTarget.export === target.export
|
|
@@ -1457,7 +1518,9 @@ class ExportInfo {
|
|
|
1457
1518
|
connection: updateOriginalConnection
|
|
1458
1519
|
? updateOriginalConnection(target)
|
|
1459
1520
|
: target.connection,
|
|
1460
|
-
export: /** @type {NonNullable<
|
|
1521
|
+
export: /** @type {NonNullable<TargetItemWithConnection["export"]>} */ (
|
|
1522
|
+
target.export
|
|
1523
|
+
),
|
|
1461
1524
|
priority: 0
|
|
1462
1525
|
});
|
|
1463
1526
|
return target;
|
|
@@ -1467,8 +1530,9 @@ class ExportInfo {
|
|
|
1467
1530
|
* @returns {ExportsInfo} an exports info
|
|
1468
1531
|
*/
|
|
1469
1532
|
createNestedExportsInfo() {
|
|
1470
|
-
if (this.exportsInfoOwned)
|
|
1533
|
+
if (this.exportsInfoOwned) {
|
|
1471
1534
|
return /** @type {ExportsInfo} */ (this.exportsInfo);
|
|
1535
|
+
}
|
|
1472
1536
|
this.exportsInfoOwned = true;
|
|
1473
1537
|
const oldExportsInfo = this.exportsInfo;
|
|
1474
1538
|
this.exportsInfo = new ExportsInfo();
|
|
@@ -1621,4 +1685,5 @@ class ExportInfo {
|
|
|
1621
1685
|
|
|
1622
1686
|
module.exports = ExportsInfo;
|
|
1623
1687
|
module.exports.ExportInfo = ExportInfo;
|
|
1688
|
+
module.exports.RestoreProvidedData = RestoreProvidedData;
|
|
1624
1689
|
module.exports.UsageState = UsageState;
|