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/ChunkGraph.js
CHANGED
|
@@ -8,33 +8,38 @@
|
|
|
8
8
|
const util = require("util");
|
|
9
9
|
const Entrypoint = require("./Entrypoint");
|
|
10
10
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
11
|
+
const { DEFAULTS } = require("./config/defaults");
|
|
11
12
|
const { first } = require("./util/SetHelpers");
|
|
12
13
|
const SortableSet = require("./util/SortableSet");
|
|
13
14
|
const {
|
|
14
|
-
|
|
15
|
+
compareIds,
|
|
15
16
|
compareIterables,
|
|
17
|
+
compareModulesById,
|
|
16
18
|
compareModulesByIdentifier,
|
|
17
|
-
concatComparators,
|
|
18
19
|
compareSelect,
|
|
19
|
-
|
|
20
|
+
concatComparators
|
|
20
21
|
} = require("./util/comparators");
|
|
21
22
|
const createHash = require("./util/createHash");
|
|
22
23
|
const findGraphRoots = require("./util/findGraphRoots");
|
|
23
24
|
const {
|
|
24
25
|
RuntimeSpecMap,
|
|
25
26
|
RuntimeSpecSet,
|
|
26
|
-
|
|
27
|
+
forEachRuntime,
|
|
27
28
|
mergeRuntime,
|
|
28
|
-
|
|
29
|
+
runtimeToString
|
|
29
30
|
} = require("./util/runtime");
|
|
30
31
|
|
|
31
32
|
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
32
33
|
/** @typedef {import("./Chunk")} Chunk */
|
|
34
|
+
/** @typedef {import("./Chunk").Chunks} Chunks */
|
|
35
|
+
/** @typedef {import("./Chunk").Entrypoints} Entrypoints */
|
|
33
36
|
/** @typedef {import("./Chunk").ChunkId} ChunkId */
|
|
34
37
|
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
|
35
|
-
/** @typedef {import("./Generator").SourceTypes} SourceTypes */
|
|
36
38
|
/** @typedef {import("./Module")} Module */
|
|
39
|
+
/** @typedef {import("./Module").SourceType} SourceType */
|
|
40
|
+
/** @typedef {import("./Module").SourceTypes} SourceTypes */
|
|
37
41
|
/** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
|
42
|
+
/** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
|
|
38
43
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
39
44
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
40
45
|
/** @typedef {import("./RuntimeModule")} RuntimeModule */
|
|
@@ -61,7 +66,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
|
|
|
61
66
|
class ModuleHashInfo {
|
|
62
67
|
/**
|
|
63
68
|
* @param {string} hash hash
|
|
64
|
-
* @param {string} renderedHash
|
|
69
|
+
* @param {string} renderedHash rendered hash
|
|
65
70
|
*/
|
|
66
71
|
constructor(hash, renderedHash) {
|
|
67
72
|
this.hash = hash;
|
|
@@ -69,20 +74,18 @@ class ModuleHashInfo {
|
|
|
69
74
|
}
|
|
70
75
|
}
|
|
71
76
|
|
|
72
|
-
/** @template T @typedef {(set: SortableSet<T>) => T[]} SetToArrayFunction<T> */
|
|
73
|
-
|
|
74
77
|
/**
|
|
75
78
|
* @template T
|
|
76
79
|
* @param {SortableSet<T>} set the set
|
|
77
80
|
* @returns {T[]} set as array
|
|
78
81
|
*/
|
|
79
|
-
const getArray = set =>
|
|
82
|
+
const getArray = (set) => [...set];
|
|
80
83
|
|
|
81
84
|
/**
|
|
82
|
-
* @param {
|
|
85
|
+
* @param {SortableChunks} chunks the chunks
|
|
83
86
|
* @returns {RuntimeSpecSet} runtimes
|
|
84
87
|
*/
|
|
85
|
-
const getModuleRuntimes = chunks => {
|
|
88
|
+
const getModuleRuntimes = (chunks) => {
|
|
86
89
|
const runtimes = new RuntimeSpecSet();
|
|
87
90
|
for (const chunk of chunks) {
|
|
88
91
|
runtimes.add(chunk.runtime);
|
|
@@ -91,11 +94,11 @@ const getModuleRuntimes = chunks => {
|
|
|
91
94
|
};
|
|
92
95
|
|
|
93
96
|
/**
|
|
94
|
-
* @param {
|
|
95
|
-
* @returns {
|
|
97
|
+
* @param {SourceTypesByModule | undefined} sourceTypesByModule sourceTypesByModule
|
|
98
|
+
* @returns {(set: SortableSet<Module>) => Map<string, SortableSet<Module>>} modules by source type
|
|
96
99
|
*/
|
|
97
|
-
const modulesBySourceType = sourceTypesByModule => set => {
|
|
98
|
-
/** @type {Map<
|
|
100
|
+
const modulesBySourceType = (sourceTypesByModule) => (set) => {
|
|
101
|
+
/** @type {Map<SourceType, SortableSet<Module>>} */
|
|
99
102
|
const map = new Map();
|
|
100
103
|
for (const module of set) {
|
|
101
104
|
const sourceTypes =
|
|
@@ -121,24 +124,27 @@ const modulesBySourceType = sourceTypesByModule => set => {
|
|
|
121
124
|
};
|
|
122
125
|
const defaultModulesBySourceType = modulesBySourceType(undefined);
|
|
123
126
|
|
|
127
|
+
/**
|
|
128
|
+
* @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
|
|
129
|
+
*/
|
|
130
|
+
|
|
124
131
|
/**
|
|
125
132
|
* @template T
|
|
126
|
-
* @type {WeakMap<
|
|
133
|
+
* @type {WeakMap<ModuleComparator, ModuleSetToArrayFunction>}
|
|
127
134
|
*/
|
|
128
135
|
const createOrderedArrayFunctionMap = new WeakMap();
|
|
129
136
|
|
|
130
137
|
/**
|
|
131
138
|
* @template T
|
|
132
|
-
* @param {
|
|
133
|
-
* @returns {
|
|
139
|
+
* @param {ModuleComparator} comparator comparator function
|
|
140
|
+
* @returns {ModuleSetToArrayFunction} set as ordered array
|
|
134
141
|
*/
|
|
135
|
-
const createOrderedArrayFunction = comparator => {
|
|
136
|
-
/** @type {SetToArrayFunction<T>} */
|
|
142
|
+
const createOrderedArrayFunction = (comparator) => {
|
|
137
143
|
let fn = createOrderedArrayFunctionMap.get(comparator);
|
|
138
144
|
if (fn !== undefined) return fn;
|
|
139
|
-
fn = set => {
|
|
145
|
+
fn = (set) => {
|
|
140
146
|
set.sortWith(comparator);
|
|
141
|
-
return
|
|
147
|
+
return [...set];
|
|
142
148
|
};
|
|
143
149
|
createOrderedArrayFunctionMap.set(comparator, fn);
|
|
144
150
|
return fn;
|
|
@@ -148,7 +154,7 @@ const createOrderedArrayFunction = comparator => {
|
|
|
148
154
|
* @param {Iterable<Module>} modules the modules to get the count/size of
|
|
149
155
|
* @returns {number} the size of the modules
|
|
150
156
|
*/
|
|
151
|
-
const getModulesSize = modules => {
|
|
157
|
+
const getModulesSize = (modules) => {
|
|
152
158
|
let size = 0;
|
|
153
159
|
for (const module of modules) {
|
|
154
160
|
for (const type of module.getSourceTypes()) {
|
|
@@ -162,7 +168,7 @@ const getModulesSize = modules => {
|
|
|
162
168
|
* @param {Iterable<Module>} modules the sortable Set to get the size of
|
|
163
169
|
* @returns {Record<string, number>} the sizes of the modules
|
|
164
170
|
*/
|
|
165
|
-
const getModulesSizes = modules => {
|
|
171
|
+
const getModulesSizes = (modules) => {
|
|
166
172
|
const sizes = Object.create(null);
|
|
167
173
|
for (const module of modules) {
|
|
168
174
|
for (const type of module.getSourceTypes()) {
|
|
@@ -189,13 +195,14 @@ const isAvailableChunk = (a, b) => {
|
|
|
189
195
|
return true;
|
|
190
196
|
};
|
|
191
197
|
|
|
198
|
+
/** @typedef {SortableSet<Chunk>} SortableChunks */
|
|
192
199
|
/** @typedef {Set<Chunk>} EntryInChunks */
|
|
193
200
|
/** @typedef {Set<Chunk>} RuntimeInChunks */
|
|
194
201
|
/** @typedef {string | number} ModuleId */
|
|
195
202
|
|
|
196
203
|
class ChunkGraphModule {
|
|
197
204
|
constructor() {
|
|
198
|
-
/** @type {
|
|
205
|
+
/** @type {SortableChunks} */
|
|
199
206
|
this.chunks = new SortableSet();
|
|
200
207
|
/** @type {EntryInChunks | undefined} */
|
|
201
208
|
this.entryInChunks = undefined;
|
|
@@ -205,22 +212,25 @@ class ChunkGraphModule {
|
|
|
205
212
|
this.hashes = undefined;
|
|
206
213
|
/** @type {ModuleId | null} */
|
|
207
214
|
this.id = null;
|
|
208
|
-
/** @type {RuntimeSpecMap<Set<string
|
|
215
|
+
/** @type {RuntimeSpecMap<Set<string>, RuntimeRequirements> | undefined} */
|
|
209
216
|
this.runtimeRequirements = undefined;
|
|
210
|
-
/** @type {RuntimeSpecMap<string> | undefined} */
|
|
217
|
+
/** @type {RuntimeSpecMap<string, bigint> | undefined} */
|
|
211
218
|
this.graphHashes = undefined;
|
|
212
|
-
/** @type {RuntimeSpecMap<string> | undefined} */
|
|
219
|
+
/** @type {RuntimeSpecMap<string, string> | undefined} */
|
|
213
220
|
this.graphHashesWithConnections = undefined;
|
|
214
221
|
}
|
|
215
222
|
}
|
|
216
223
|
|
|
224
|
+
/** @typedef {WeakMap<Module, SourceTypes>} SourceTypesByModule */
|
|
225
|
+
/** @typedef {Map<Module, Entrypoint>} EntryModules */
|
|
226
|
+
|
|
217
227
|
class ChunkGraphChunk {
|
|
218
228
|
constructor() {
|
|
219
229
|
/** @type {SortableSet<Module>} */
|
|
220
230
|
this.modules = new SortableSet();
|
|
221
|
-
/** @type {
|
|
231
|
+
/** @type {SourceTypesByModule | undefined} */
|
|
222
232
|
this.sourceTypesByModule = undefined;
|
|
223
|
-
/** @type {
|
|
233
|
+
/** @type {EntryModules} */
|
|
224
234
|
this.entryModules = new Map();
|
|
225
235
|
/** @type {SortableSet<RuntimeModule>} */
|
|
226
236
|
this.runtimeModules = new SortableSet();
|
|
@@ -228,7 +238,7 @@ class ChunkGraphChunk {
|
|
|
228
238
|
this.fullHashModules = undefined;
|
|
229
239
|
/** @type {Set<RuntimeModule> | undefined} */
|
|
230
240
|
this.dependentHashModules = undefined;
|
|
231
|
-
/** @type {
|
|
241
|
+
/** @type {RuntimeRequirements | undefined} */
|
|
232
242
|
this.runtimeRequirements = undefined;
|
|
233
243
|
/** @type {Set<string>} */
|
|
234
244
|
this.runtimeRequirementsInTree = new Set();
|
|
@@ -237,12 +247,19 @@ class ChunkGraphChunk {
|
|
|
237
247
|
}
|
|
238
248
|
}
|
|
239
249
|
|
|
250
|
+
/** @typedef {string | number} RuntimeId */
|
|
251
|
+
/** @typedef {Record<ModuleId, string>} IdToHashMap */
|
|
252
|
+
/** @typedef {Record<ChunkId, IdToHashMap>} ChunkModuleHashMap */
|
|
253
|
+
/** @typedef {Record<ChunkId, ModuleId[]>} ChunkModuleIdMap */
|
|
254
|
+
|
|
255
|
+
/** @typedef {(a: Module, b: Module) => -1 | 0 | 1} ModuleComparator */
|
|
256
|
+
|
|
240
257
|
class ChunkGraph {
|
|
241
258
|
/**
|
|
242
259
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
243
260
|
* @param {string | Hash} hashFunction the hash function to use
|
|
244
261
|
*/
|
|
245
|
-
constructor(moduleGraph, hashFunction =
|
|
262
|
+
constructor(moduleGraph, hashFunction = DEFAULTS.HASH_FUNCTION) {
|
|
246
263
|
/**
|
|
247
264
|
* @private
|
|
248
265
|
* @type {WeakMap<Module, ChunkGraphModule>}
|
|
@@ -260,7 +277,7 @@ class ChunkGraph {
|
|
|
260
277
|
this._blockChunkGroups = new WeakMap();
|
|
261
278
|
/**
|
|
262
279
|
* @private
|
|
263
|
-
* @type {Map<string,
|
|
280
|
+
* @type {Map<string, RuntimeId>}
|
|
264
281
|
*/
|
|
265
282
|
this._runtimeIds = new Map();
|
|
266
283
|
/** @type {ModuleGraph} */
|
|
@@ -305,14 +322,14 @@ class ChunkGraph {
|
|
|
305
322
|
*/
|
|
306
323
|
_getGraphRoots(set) {
|
|
307
324
|
const { moduleGraph } = this;
|
|
308
|
-
return
|
|
309
|
-
findGraphRoots(set, module => {
|
|
325
|
+
return [
|
|
326
|
+
...findGraphRoots(set, (module) => {
|
|
310
327
|
/** @type {Set<Module>} */
|
|
311
328
|
const set = new Set();
|
|
312
329
|
/**
|
|
313
330
|
* @param {Module} module module
|
|
314
331
|
*/
|
|
315
|
-
const addDependencies = module => {
|
|
332
|
+
const addDependencies = (module) => {
|
|
316
333
|
for (const connection of moduleGraph.getOutgoingConnections(module)) {
|
|
317
334
|
if (!connection.module) continue;
|
|
318
335
|
const activeState = connection.getActiveState(undefined);
|
|
@@ -327,7 +344,7 @@ class ChunkGraph {
|
|
|
327
344
|
addDependencies(module);
|
|
328
345
|
return set;
|
|
329
346
|
})
|
|
330
|
-
|
|
347
|
+
].sort(compareModulesByIdentifier);
|
|
331
348
|
}
|
|
332
349
|
|
|
333
350
|
/**
|
|
@@ -415,8 +432,9 @@ class ChunkGraph {
|
|
|
415
432
|
*/
|
|
416
433
|
attachDependentHashModules(chunk, modules) {
|
|
417
434
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
418
|
-
if (cgc.dependentHashModules === undefined)
|
|
435
|
+
if (cgc.dependentHashModules === undefined) {
|
|
419
436
|
cgc.dependentHashModules = new Set();
|
|
437
|
+
}
|
|
420
438
|
for (const module of modules) {
|
|
421
439
|
cgc.dependentHashModules.add(module);
|
|
422
440
|
}
|
|
@@ -446,7 +464,7 @@ class ChunkGraph {
|
|
|
446
464
|
for (const chunk of oldCgm.entryInChunks) {
|
|
447
465
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
448
466
|
const old = /** @type {Entrypoint} */ (cgc.entryModules.get(oldModule));
|
|
449
|
-
/** @type {
|
|
467
|
+
/** @type {EntryModules} */
|
|
450
468
|
const newEntryModules = new Map();
|
|
451
469
|
for (const [m, cg] of cgc.entryModules) {
|
|
452
470
|
if (m === oldModule) {
|
|
@@ -535,7 +553,7 @@ class ChunkGraph {
|
|
|
535
553
|
|
|
536
554
|
/**
|
|
537
555
|
* @param {Module} module the module
|
|
538
|
-
* @param {
|
|
556
|
+
* @param {(a: Chunk, b: Chunk) => -1 | 0 | 1} sortFn sort function
|
|
539
557
|
* @returns {Iterable<Chunk>} iterable of chunks (do not modify)
|
|
540
558
|
*/
|
|
541
559
|
getOrderedModuleChunksIterable(module, sortFn) {
|
|
@@ -614,7 +632,7 @@ class ChunkGraph {
|
|
|
614
632
|
/**
|
|
615
633
|
* @param {Chunk} chunk chunk
|
|
616
634
|
* @param {Module} module chunk module
|
|
617
|
-
* @param {
|
|
635
|
+
* @param {SourceTypes} sourceTypes source types
|
|
618
636
|
*/
|
|
619
637
|
setChunkModuleSourceTypes(chunk, module, sourceTypes) {
|
|
620
638
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
@@ -651,10 +669,11 @@ class ChunkGraph {
|
|
|
651
669
|
|
|
652
670
|
/**
|
|
653
671
|
* @param {Module} module module
|
|
654
|
-
* @returns {
|
|
672
|
+
* @returns {SourceTypes | undefined} source types
|
|
655
673
|
*/
|
|
656
674
|
_getOverwrittenModuleSourceTypes(module) {
|
|
657
675
|
let newSet = false;
|
|
676
|
+
/** @type {Set<SourceType> | undefined} */
|
|
658
677
|
let sourceTypes;
|
|
659
678
|
for (const chunk of this.getModuleChunksIterable(module)) {
|
|
660
679
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
@@ -662,8 +681,7 @@ class ChunkGraph {
|
|
|
662
681
|
const st = cgc.sourceTypesByModule.get(module);
|
|
663
682
|
if (st === undefined) return;
|
|
664
683
|
if (!sourceTypes) {
|
|
665
|
-
sourceTypes = st;
|
|
666
|
-
continue;
|
|
684
|
+
sourceTypes = /** @type {Set<SourceType>} */ (st);
|
|
667
685
|
} else if (!newSet) {
|
|
668
686
|
for (const type of st) {
|
|
669
687
|
if (!newSet) {
|
|
@@ -686,7 +704,7 @@ class ChunkGraph {
|
|
|
686
704
|
|
|
687
705
|
/**
|
|
688
706
|
* @param {Chunk} chunk the chunk
|
|
689
|
-
* @param {
|
|
707
|
+
* @param {ModuleComparator} comparator comparator function
|
|
690
708
|
* @returns {Iterable<Module>} return the modules for this chunk
|
|
691
709
|
*/
|
|
692
710
|
getOrderedChunkModulesIterable(chunk, comparator) {
|
|
@@ -698,7 +716,7 @@ class ChunkGraph {
|
|
|
698
716
|
/**
|
|
699
717
|
* @param {Chunk} chunk the chunk
|
|
700
718
|
* @param {string} sourceType source type
|
|
701
|
-
* @param {
|
|
719
|
+
* @param {ModuleComparator} comparator comparator function
|
|
702
720
|
* @returns {Iterable<Module> | undefined} return the modules for this chunk
|
|
703
721
|
*/
|
|
704
722
|
getOrderedChunkModulesIterableBySourceType(chunk, sourceType, comparator) {
|
|
@@ -722,7 +740,7 @@ class ChunkGraph {
|
|
|
722
740
|
|
|
723
741
|
/**
|
|
724
742
|
* @param {Chunk} chunk the chunk
|
|
725
|
-
* @param {
|
|
743
|
+
* @param {ModuleComparator} comparator comparator function
|
|
726
744
|
* @returns {Module[]} return the modules for this chunk (cached, do not modify)
|
|
727
745
|
*/
|
|
728
746
|
getOrderedChunkModules(chunk, comparator) {
|
|
@@ -735,16 +753,16 @@ class ChunkGraph {
|
|
|
735
753
|
* @param {Chunk} chunk the chunk
|
|
736
754
|
* @param {ModuleFilterPredicate} filterFn function used to filter modules
|
|
737
755
|
* @param {boolean} includeAllChunks all chunks or only async chunks
|
|
738
|
-
* @returns {
|
|
756
|
+
* @returns {ChunkModuleIdMap} chunk to module ids object
|
|
739
757
|
*/
|
|
740
758
|
getChunkModuleIdMap(chunk, filterFn, includeAllChunks = false) {
|
|
741
|
-
/** @type {
|
|
759
|
+
/** @type {ChunkModuleIdMap} */
|
|
742
760
|
const chunkModuleIdMap = Object.create(null);
|
|
743
761
|
|
|
744
762
|
for (const asyncChunk of includeAllChunks
|
|
745
763
|
? chunk.getAllReferencedChunks()
|
|
746
764
|
: chunk.getAllAsyncChunks()) {
|
|
747
|
-
/** @type {
|
|
765
|
+
/** @type {ModuleId[] | undefined} */
|
|
748
766
|
let array;
|
|
749
767
|
for (const module of this.getOrderedChunkModulesIterable(
|
|
750
768
|
asyncChunk,
|
|
@@ -769,7 +787,7 @@ class ChunkGraph {
|
|
|
769
787
|
* @param {ModuleFilterPredicate} filterFn function used to filter modules
|
|
770
788
|
* @param {number} hashLength length of the hash
|
|
771
789
|
* @param {boolean} includeAllChunks all chunks or only async chunks
|
|
772
|
-
* @returns {
|
|
790
|
+
* @returns {ChunkModuleHashMap} chunk to module id to module hash object
|
|
773
791
|
*/
|
|
774
792
|
getChunkModuleRenderedHashMap(
|
|
775
793
|
chunk,
|
|
@@ -777,11 +795,9 @@ class ChunkGraph {
|
|
|
777
795
|
hashLength = 0,
|
|
778
796
|
includeAllChunks = false
|
|
779
797
|
) {
|
|
780
|
-
/** @type {
|
|
798
|
+
/** @type {ChunkModuleHashMap} */
|
|
781
799
|
const chunkModuleHashMap = Object.create(null);
|
|
782
800
|
|
|
783
|
-
/** @typedef {Record<string|number, string>} IdToHashMap */
|
|
784
|
-
|
|
785
801
|
for (const asyncChunk of includeAllChunks
|
|
786
802
|
? chunk.getAllReferencedChunks()
|
|
787
803
|
: chunk.getAllAsyncChunks()) {
|
|
@@ -795,7 +811,8 @@ class ChunkGraph {
|
|
|
795
811
|
if (idToHashMap === undefined) {
|
|
796
812
|
idToHashMap = Object.create(null);
|
|
797
813
|
chunkModuleHashMap[/** @type {ChunkId} */ (asyncChunk.id)] =
|
|
798
|
-
/** @type {IdToHashMap} */
|
|
814
|
+
/** @type {IdToHashMap} */
|
|
815
|
+
(idToHashMap);
|
|
799
816
|
}
|
|
800
817
|
const moduleId = this.getModuleId(module);
|
|
801
818
|
const hash = this.getRenderedModuleHash(module, asyncChunk.runtime);
|
|
@@ -813,7 +830,7 @@ class ChunkGraph {
|
|
|
813
830
|
/**
|
|
814
831
|
* @param {Chunk} chunk the chunk
|
|
815
832
|
* @param {ChunkFilterPredicate} filterFn function used to filter chunks
|
|
816
|
-
* @returns {Record<
|
|
833
|
+
* @returns {Record<ChunkId, boolean>} chunk map
|
|
817
834
|
*/
|
|
818
835
|
getChunkConditionMap(chunk, filterFn) {
|
|
819
836
|
const map = Object.create(null);
|
|
@@ -856,7 +873,7 @@ class ChunkGraph {
|
|
|
856
873
|
/**
|
|
857
874
|
* @param {Chunk} chunkA first chunk
|
|
858
875
|
* @param {Chunk} chunkB second chunk
|
|
859
|
-
* @returns {-1|0|1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
|
|
876
|
+
* @returns {-1 | 0 | 1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
|
|
860
877
|
*/
|
|
861
878
|
compareChunks(chunkA, chunkB) {
|
|
862
879
|
const cgcA = this._getChunkGraphChunk(chunkA);
|
|
@@ -1017,9 +1034,10 @@ class ChunkGraph {
|
|
|
1017
1034
|
this.connectChunkAndModule(chunkA, module);
|
|
1018
1035
|
}
|
|
1019
1036
|
|
|
1020
|
-
for (const [
|
|
1021
|
-
|
|
1022
|
-
|
|
1037
|
+
for (const [
|
|
1038
|
+
module,
|
|
1039
|
+
chunkGroup
|
|
1040
|
+
] of this.getChunkEntryModulesWithChunkGroupIterable(chunkB)) {
|
|
1023
1041
|
this.disconnectChunkAndEntryModule(chunkB, module);
|
|
1024
1042
|
this.connectChunkAndEntryModule(
|
|
1025
1043
|
chunkA,
|
|
@@ -1113,8 +1131,9 @@ class ChunkGraph {
|
|
|
1113
1131
|
*/
|
|
1114
1132
|
addDependentHashModuleToChunk(chunk, module) {
|
|
1115
1133
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
1116
|
-
if (cgc.dependentHashModules === undefined)
|
|
1134
|
+
if (cgc.dependentHashModules === undefined) {
|
|
1117
1135
|
cgc.dependentHashModules = new Set();
|
|
1136
|
+
}
|
|
1118
1137
|
cgc.dependentHashModules.add(module);
|
|
1119
1138
|
}
|
|
1120
1139
|
|
|
@@ -1212,7 +1231,7 @@ class ChunkGraph {
|
|
|
1212
1231
|
* @returns {Iterable<Chunk>} iterable of chunks
|
|
1213
1232
|
*/
|
|
1214
1233
|
getChunkEntryDependentChunksIterable(chunk) {
|
|
1215
|
-
/** @type {
|
|
1234
|
+
/** @type {Chunks} */
|
|
1216
1235
|
const set = new Set();
|
|
1217
1236
|
for (const chunkGroup of chunk.groupsIterable) {
|
|
1218
1237
|
if (chunkGroup instanceof Entrypoint) {
|
|
@@ -1231,6 +1250,60 @@ class ChunkGraph {
|
|
|
1231
1250
|
return set;
|
|
1232
1251
|
}
|
|
1233
1252
|
|
|
1253
|
+
/**
|
|
1254
|
+
* @param {Chunk} chunk the chunk
|
|
1255
|
+
* @returns {Iterable<Chunk>} iterable of chunks and include chunks from children entrypoints
|
|
1256
|
+
*/
|
|
1257
|
+
getRuntimeChunkDependentChunksIterable(chunk) {
|
|
1258
|
+
/** @type {Chunks} */
|
|
1259
|
+
const set = new Set();
|
|
1260
|
+
|
|
1261
|
+
/** @type {Entrypoints} */
|
|
1262
|
+
const entrypoints = new Set();
|
|
1263
|
+
|
|
1264
|
+
for (const chunkGroup of chunk.groupsIterable) {
|
|
1265
|
+
if (chunkGroup instanceof Entrypoint) {
|
|
1266
|
+
const queue = [chunkGroup];
|
|
1267
|
+
while (queue.length > 0) {
|
|
1268
|
+
const current = queue.shift();
|
|
1269
|
+
if (current) {
|
|
1270
|
+
entrypoints.add(current);
|
|
1271
|
+
|
|
1272
|
+
let hasChildrenEntrypoint = false;
|
|
1273
|
+
for (const child of current.childrenIterable) {
|
|
1274
|
+
if (child instanceof Entrypoint && child.dependOn(current)) {
|
|
1275
|
+
hasChildrenEntrypoint = true;
|
|
1276
|
+
queue.push(/** @type {Entrypoint} */ (child));
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
// entryChunkB: hasChildrenEntrypoint = true
|
|
1280
|
+
// entryChunkA: dependOn = entryChunkB
|
|
1281
|
+
if (hasChildrenEntrypoint) {
|
|
1282
|
+
const entrypointChunk = current.getEntrypointChunk();
|
|
1283
|
+
if (entrypointChunk !== chunk && !entrypointChunk.hasRuntime()) {
|
|
1284
|
+
// add entryChunkB to set
|
|
1285
|
+
set.add(entrypointChunk);
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
for (const entrypoint of entrypoints) {
|
|
1294
|
+
const entrypointChunk = entrypoint.getEntrypointChunk();
|
|
1295
|
+
const cgc = this._getChunkGraphChunk(entrypointChunk);
|
|
1296
|
+
for (const chunkGroup of cgc.entryModules.values()) {
|
|
1297
|
+
for (const c of chunkGroup.chunks) {
|
|
1298
|
+
if (c !== chunk && c !== entrypointChunk && !c.hasRuntime()) {
|
|
1299
|
+
set.add(c);
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
return set;
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1234
1307
|
/**
|
|
1235
1308
|
* @param {Chunk} chunk the chunk
|
|
1236
1309
|
* @returns {boolean} true, when it has dependent chunks
|
|
@@ -1262,10 +1335,13 @@ class ChunkGraph {
|
|
|
1262
1335
|
*/
|
|
1263
1336
|
getChunkRuntimeModulesInOrder(chunk) {
|
|
1264
1337
|
const cgc = this._getChunkGraphChunk(chunk);
|
|
1265
|
-
const array =
|
|
1338
|
+
const array = [...cgc.runtimeModules];
|
|
1266
1339
|
array.sort(
|
|
1267
1340
|
concatComparators(
|
|
1268
|
-
compareSelect(
|
|
1341
|
+
compareSelect(
|
|
1342
|
+
(r) => /** @type {RuntimeModule} */ (r).stage,
|
|
1343
|
+
compareIds
|
|
1344
|
+
),
|
|
1269
1345
|
compareModulesByIdentifier
|
|
1270
1346
|
)
|
|
1271
1347
|
);
|
|
@@ -1359,15 +1435,15 @@ class ChunkGraph {
|
|
|
1359
1435
|
|
|
1360
1436
|
/**
|
|
1361
1437
|
* @param {string} runtime runtime
|
|
1362
|
-
* @returns {
|
|
1438
|
+
* @returns {RuntimeId} the id of the runtime
|
|
1363
1439
|
*/
|
|
1364
1440
|
getRuntimeId(runtime) {
|
|
1365
|
-
return /** @type {
|
|
1441
|
+
return /** @type {RuntimeId} */ (this._runtimeIds.get(runtime));
|
|
1366
1442
|
}
|
|
1367
1443
|
|
|
1368
1444
|
/**
|
|
1369
1445
|
* @param {string} runtime runtime
|
|
1370
|
-
* @param {
|
|
1446
|
+
* @param {RuntimeId} id the id of the runtime
|
|
1371
1447
|
* @returns {void}
|
|
1372
1448
|
*/
|
|
1373
1449
|
setRuntimeId(runtime, id) {
|
|
@@ -1394,7 +1470,7 @@ class ChunkGraph {
|
|
|
1394
1470
|
throw new Error(
|
|
1395
1471
|
`No unique hash info entry for unspecified runtime for ${module.identifier()} (existing runtimes: ${Array.from(
|
|
1396
1472
|
hashes.keys(),
|
|
1397
|
-
r => runtimeToString(r)
|
|
1473
|
+
(r) => runtimeToString(r)
|
|
1398
1474
|
).join(", ")}).
|
|
1399
1475
|
Caller might not support runtime-dependent code generation (opt-out via optimization.usedExports: "global").`
|
|
1400
1476
|
);
|
|
@@ -1467,7 +1543,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1467
1543
|
/**
|
|
1468
1544
|
* @param {Module} module the module
|
|
1469
1545
|
* @param {RuntimeSpec} runtime the runtime
|
|
1470
|
-
* @param {
|
|
1546
|
+
* @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
|
|
1471
1547
|
* @param {boolean} transferOwnership true: transfer ownership of the items object, false: items is immutable and shared and won't be modified
|
|
1472
1548
|
* @returns {void}
|
|
1473
1549
|
*/
|
|
@@ -1486,7 +1562,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1486
1562
|
cgm.runtimeRequirements = map;
|
|
1487
1563
|
return;
|
|
1488
1564
|
}
|
|
1489
|
-
runtimeRequirementsMap.update(runtime, runtimeRequirements => {
|
|
1565
|
+
runtimeRequirementsMap.update(runtime, (runtimeRequirements) => {
|
|
1490
1566
|
if (runtimeRequirements === undefined) {
|
|
1491
1567
|
return transferOwnership ? items : new Set(items);
|
|
1492
1568
|
} else if (!transferOwnership || runtimeRequirements.size >= items.size) {
|
|
@@ -1501,7 +1577,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1501
1577
|
|
|
1502
1578
|
/**
|
|
1503
1579
|
* @param {Chunk} chunk the chunk
|
|
1504
|
-
* @param {
|
|
1580
|
+
* @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
|
|
1505
1581
|
* @returns {void}
|
|
1506
1582
|
*/
|
|
1507
1583
|
addChunkRuntimeRequirements(chunk, items) {
|
|
@@ -1596,7 +1672,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1596
1672
|
for (const type of sourceTypes) hash.update(type);
|
|
1597
1673
|
}
|
|
1598
1674
|
this.moduleGraph.getExportsInfo(module).updateHash(hash, runtime);
|
|
1599
|
-
return BigInt(`0x${
|
|
1675
|
+
return BigInt(`0x${hash.digest("hex")}`);
|
|
1600
1676
|
});
|
|
1601
1677
|
return graphHash;
|
|
1602
1678
|
}
|
|
@@ -1616,7 +1692,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1616
1692
|
* @param {ConnectionState} state state
|
|
1617
1693
|
* @returns {"F" | "T" | "O"} result
|
|
1618
1694
|
*/
|
|
1619
|
-
const activeStateToString = state => {
|
|
1695
|
+
const activeStateToString = (state) => {
|
|
1620
1696
|
if (state === false) return "F";
|
|
1621
1697
|
if (state === true) return "T";
|
|
1622
1698
|
if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
|
|
@@ -1642,8 +1718,9 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1642
1718
|
const module = connection.module;
|
|
1643
1719
|
stateInfo += module.getExportsType(this.moduleGraph, strict);
|
|
1644
1720
|
// cspell:word Tnamespace
|
|
1645
|
-
if (stateInfo === "Tnamespace")
|
|
1646
|
-
|
|
1721
|
+
if (stateInfo === "Tnamespace") {
|
|
1722
|
+
activeNamespaceModules.add(module);
|
|
1723
|
+
} else {
|
|
1647
1724
|
const oldModule = connectedModules.get(stateInfo);
|
|
1648
1725
|
if (oldModule === undefined) {
|
|
1649
1726
|
connectedModules.set(stateInfo, module);
|
|
@@ -1667,7 +1744,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1667
1744
|
let stateInfo = "";
|
|
1668
1745
|
forEachRuntime(
|
|
1669
1746
|
runtime,
|
|
1670
|
-
runtime => {
|
|
1747
|
+
(runtime) => {
|
|
1671
1748
|
const state = connection.getActiveState(runtime);
|
|
1672
1749
|
states.add(state);
|
|
1673
1750
|
stateInfo += activeStateToString(state) + runtime;
|
|
@@ -1683,17 +1760,18 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1683
1760
|
}
|
|
1684
1761
|
}
|
|
1685
1762
|
// cspell:word Tnamespace
|
|
1686
|
-
if (activeNamespaceModules.size === 0 && connectedModules.size === 0)
|
|
1763
|
+
if (activeNamespaceModules.size === 0 && connectedModules.size === 0) {
|
|
1687
1764
|
return graphHash;
|
|
1765
|
+
}
|
|
1688
1766
|
const connectedModulesInOrder =
|
|
1689
1767
|
connectedModules.size > 1
|
|
1690
|
-
?
|
|
1768
|
+
? [...connectedModules].sort(([a], [b]) => (a < b ? -1 : 1))
|
|
1691
1769
|
: connectedModules;
|
|
1692
1770
|
const hash = createHash(this._hashFunction);
|
|
1693
1771
|
/**
|
|
1694
1772
|
* @param {Module} module module
|
|
1695
1773
|
*/
|
|
1696
|
-
const addModuleToHash = module => {
|
|
1774
|
+
const addModuleToHash = (module) => {
|
|
1697
1775
|
hash.update(
|
|
1698
1776
|
this._getModuleGraphHashBigInt(
|
|
1699
1777
|
this._getChunkGraphModule(module),
|
|
@@ -1705,25 +1783,24 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1705
1783
|
/**
|
|
1706
1784
|
* @param {Set<Module>} modules modules
|
|
1707
1785
|
*/
|
|
1708
|
-
const addModulesToHash = modules => {
|
|
1786
|
+
const addModulesToHash = (modules) => {
|
|
1709
1787
|
let xor = ZERO_BIG_INT;
|
|
1710
1788
|
for (const m of modules) {
|
|
1711
|
-
xor
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
runtime
|
|
1717
|
-
);
|
|
1789
|
+
xor ^= this._getModuleGraphHashBigInt(
|
|
1790
|
+
this._getChunkGraphModule(m),
|
|
1791
|
+
m,
|
|
1792
|
+
runtime
|
|
1793
|
+
);
|
|
1718
1794
|
}
|
|
1719
1795
|
hash.update(xor.toString(16));
|
|
1720
1796
|
};
|
|
1721
|
-
if (activeNamespaceModules.size === 1)
|
|
1797
|
+
if (activeNamespaceModules.size === 1) {
|
|
1722
1798
|
addModuleToHash(
|
|
1723
1799
|
/** @type {Module} */ (activeNamespaceModules.values().next().value)
|
|
1724
1800
|
);
|
|
1725
|
-
else if (activeNamespaceModules.size > 1)
|
|
1801
|
+
} else if (activeNamespaceModules.size > 1) {
|
|
1726
1802
|
addModulesToHash(activeNamespaceModules);
|
|
1803
|
+
}
|
|
1727
1804
|
for (const [stateInfo, modules] of connectedModulesInOrder) {
|
|
1728
1805
|
hash.update(stateInfo);
|
|
1729
1806
|
if (modules instanceof Set) {
|
|
@@ -1733,7 +1810,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1733
1810
|
}
|
|
1734
1811
|
}
|
|
1735
1812
|
hash.update(graphHash);
|
|
1736
|
-
return
|
|
1813
|
+
return hash.digest("hex");
|
|
1737
1814
|
});
|
|
1738
1815
|
}
|
|
1739
1816
|
|
|
@@ -1761,14 +1838,15 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1761
1838
|
* @param {Module} module the module
|
|
1762
1839
|
* @returns {ChunkGraph} the chunk graph
|
|
1763
1840
|
*/
|
|
1764
|
-
module => {
|
|
1841
|
+
(module) => {
|
|
1765
1842
|
const chunkGraph = chunkGraphForModuleMap.get(module);
|
|
1766
|
-
if (!chunkGraph)
|
|
1843
|
+
if (!chunkGraph) {
|
|
1767
1844
|
throw new Error(
|
|
1768
1845
|
`${
|
|
1769
1846
|
deprecateMessage
|
|
1770
1847
|
}: There was no ChunkGraph assigned to the Module for backward-compat (Use the new API)`
|
|
1771
1848
|
);
|
|
1849
|
+
}
|
|
1772
1850
|
return chunkGraph;
|
|
1773
1851
|
},
|
|
1774
1852
|
`${deprecateMessage}: Use new ChunkGraph API`,
|
|
@@ -1812,14 +1890,15 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
|
1812
1890
|
* @param {Chunk} chunk the chunk
|
|
1813
1891
|
* @returns {ChunkGraph} the chunk graph
|
|
1814
1892
|
*/
|
|
1815
|
-
chunk => {
|
|
1893
|
+
(chunk) => {
|
|
1816
1894
|
const chunkGraph = chunkGraphForChunkMap.get(chunk);
|
|
1817
|
-
if (!chunkGraph)
|
|
1895
|
+
if (!chunkGraph) {
|
|
1818
1896
|
throw new Error(
|
|
1819
1897
|
`${
|
|
1820
1898
|
deprecateMessage
|
|
1821
1899
|
}There was no ChunkGraph assigned to the Chunk for backward-compat (Use the new API)`
|
|
1822
1900
|
);
|
|
1901
|
+
}
|
|
1823
1902
|
return chunkGraph;
|
|
1824
1903
|
},
|
|
1825
1904
|
`${deprecateMessage}: Use new ChunkGraph API`,
|