webpack 5.59.0 → 5.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
package/lib/ModuleGraph.js
CHANGED
@@ -35,14 +35,15 @@ const getConnectionsByOriginModule = set => {
|
|
35
35
|
const map = new Map();
|
36
36
|
/** @type {Module | 0} */
|
37
37
|
let lastModule = 0;
|
38
|
-
/** @type {ModuleGraphConnection[]} */
|
39
|
-
let lastList
|
38
|
+
/** @type {ModuleGraphConnection[] | undefined} */
|
39
|
+
let lastList;
|
40
40
|
for (const connection of set) {
|
41
41
|
const { originModule } = connection;
|
42
42
|
if (lastModule === originModule) {
|
43
|
-
|
43
|
+
/** @type {ModuleGraphConnection[]} */
|
44
|
+
(lastList).push(connection);
|
44
45
|
} else {
|
45
|
-
lastModule = originModule;
|
46
|
+
lastModule = /** @type {Module} */ (originModule);
|
46
47
|
const list = map.get(originModule);
|
47
48
|
if (list !== undefined) {
|
48
49
|
lastList = list;
|
@@ -65,12 +66,13 @@ const getConnectionsByModule = set => {
|
|
65
66
|
const map = new Map();
|
66
67
|
/** @type {Module | 0} */
|
67
68
|
let lastModule = 0;
|
68
|
-
/** @type {ModuleGraphConnection[]} */
|
69
|
-
let lastList
|
69
|
+
/** @type {ModuleGraphConnection[] | undefined} */
|
70
|
+
let lastList;
|
70
71
|
for (const connection of set) {
|
71
72
|
const { module } = connection;
|
72
73
|
if (lastModule === module) {
|
73
|
-
|
74
|
+
/** @type {ModuleGraphConnection[]} */
|
75
|
+
(lastList).push(connection);
|
74
76
|
} else {
|
75
77
|
lastModule = module;
|
76
78
|
const list = map.get(module);
|
@@ -87,47 +89,69 @@ const getConnectionsByModule = set => {
|
|
87
89
|
return map;
|
88
90
|
};
|
89
91
|
|
92
|
+
/** @typedef {SortableSet<ModuleGraphConnection>} IncomingConnections */
|
93
|
+
/** @typedef {SortableSet<ModuleGraphConnection>} OutgoingConnections */
|
94
|
+
|
90
95
|
class ModuleGraphModule {
|
91
96
|
constructor() {
|
92
|
-
/** @type {
|
97
|
+
/** @type {IncomingConnections} */
|
93
98
|
this.incomingConnections = new SortableSet();
|
94
|
-
/** @type {
|
99
|
+
/** @type {OutgoingConnections | undefined} */
|
95
100
|
this.outgoingConnections = undefined;
|
96
|
-
/** @type {Module | null} */
|
101
|
+
/** @type {Module | null | undefined} */
|
97
102
|
this.issuer = undefined;
|
98
103
|
/** @type {(string | OptimizationBailoutFunction)[]} */
|
99
104
|
this.optimizationBailout = [];
|
100
105
|
/** @type {ExportsInfo} */
|
101
106
|
this.exports = new ExportsInfo();
|
102
|
-
/** @type {number} */
|
107
|
+
/** @type {number | null} */
|
103
108
|
this.preOrderIndex = null;
|
104
|
-
/** @type {number} */
|
109
|
+
/** @type {number | null} */
|
105
110
|
this.postOrderIndex = null;
|
106
|
-
/** @type {number} */
|
111
|
+
/** @type {number | null} */
|
107
112
|
this.depth = null;
|
108
|
-
/** @type {ModuleProfile} */
|
113
|
+
/** @type {ModuleProfile | undefined} */
|
109
114
|
this.profile = undefined;
|
110
115
|
/** @type {boolean} */
|
111
116
|
this.async = false;
|
112
|
-
/** @type {ModuleGraphConnection[]} */
|
117
|
+
/** @type {ModuleGraphConnection[] | undefined} */
|
113
118
|
this._unassignedConnections = undefined;
|
114
119
|
}
|
115
120
|
}
|
116
121
|
|
117
122
|
class ModuleGraph {
|
118
123
|
constructor() {
|
119
|
-
/**
|
124
|
+
/**
|
125
|
+
* @type {WeakMap<Dependency, ModuleGraphConnection | null>}
|
126
|
+
* @private
|
127
|
+
*/
|
120
128
|
this._dependencyMap = new WeakMap();
|
121
|
-
/**
|
129
|
+
/**
|
130
|
+
* @type {Map<Module, ModuleGraphModule>}
|
131
|
+
* @private
|
132
|
+
*/
|
122
133
|
this._moduleMap = new Map();
|
123
|
-
/**
|
134
|
+
/**
|
135
|
+
* @type {WeakMap<any, object>}
|
136
|
+
* @private
|
137
|
+
*/
|
124
138
|
this._metaMap = new WeakMap();
|
125
|
-
|
126
|
-
|
139
|
+
/**
|
140
|
+
* @type {WeakTupleMap<any[], any> | undefined}
|
141
|
+
* @private
|
142
|
+
*/
|
127
143
|
this._cache = undefined;
|
128
|
-
|
129
|
-
|
144
|
+
/**
|
145
|
+
* @type {Map<Module, WeakTupleMap<any, any>> | undefined}
|
146
|
+
* @private
|
147
|
+
*/
|
130
148
|
this._moduleMemCaches = undefined;
|
149
|
+
|
150
|
+
/**
|
151
|
+
* @type {string | undefined}
|
152
|
+
* @private
|
153
|
+
*/
|
154
|
+
this._cacheStage = undefined;
|
131
155
|
}
|
132
156
|
|
133
157
|
/**
|
@@ -158,7 +182,7 @@ class ModuleGraph {
|
|
158
182
|
|
159
183
|
/**
|
160
184
|
* @param {Dependency} dependency the dependency
|
161
|
-
* @returns {Module} parent module
|
185
|
+
* @returns {Module | undefined} parent module
|
162
186
|
*/
|
163
187
|
getParentModule(dependency) {
|
164
188
|
return dependency._parentModule;
|
@@ -166,7 +190,7 @@ class ModuleGraph {
|
|
166
190
|
|
167
191
|
/**
|
168
192
|
* @param {Dependency} dependency the dependency
|
169
|
-
* @returns {DependenciesBlock} parent block
|
193
|
+
* @returns {DependenciesBlock | undefined} parent block
|
170
194
|
*/
|
171
195
|
getParentBlock(dependency) {
|
172
196
|
return dependency._parentDependenciesBlock;
|
@@ -181,7 +205,7 @@ class ModuleGraph {
|
|
181
205
|
}
|
182
206
|
|
183
207
|
/**
|
184
|
-
* @param {Module} originModule the referencing module
|
208
|
+
* @param {Module | null} originModule the referencing module
|
185
209
|
* @param {Dependency} dependency the referencing dependency
|
186
210
|
* @param {Module} module the referenced module
|
187
211
|
* @returns {void}
|
@@ -218,14 +242,19 @@ class ModuleGraph {
|
|
218
242
|
* @returns {void}
|
219
243
|
*/
|
220
244
|
updateModule(dependency, module) {
|
221
|
-
const connection =
|
245
|
+
const connection =
|
246
|
+
/** @type {ModuleGraphConnection} */
|
247
|
+
(this.getConnection(dependency));
|
222
248
|
if (connection.module === module) return;
|
223
249
|
const newConnection = connection.clone();
|
224
250
|
newConnection.module = module;
|
225
251
|
this._dependencyMap.set(dependency, newConnection);
|
226
252
|
connection.setActive(false);
|
227
|
-
const originMgm = this._getModuleGraphModule(
|
228
|
-
|
253
|
+
const originMgm = this._getModuleGraphModule(
|
254
|
+
/** @type {Module} */ (connection.originModule)
|
255
|
+
);
|
256
|
+
/** @type {OutgoingConnections} */
|
257
|
+
(originMgm.outgoingConnections).add(newConnection);
|
229
258
|
const targetMgm = this._getModuleGraphModule(module);
|
230
259
|
targetMgm.incomingConnections.add(newConnection);
|
231
260
|
}
|
@@ -235,11 +264,16 @@ class ModuleGraph {
|
|
235
264
|
* @returns {void}
|
236
265
|
*/
|
237
266
|
removeConnection(dependency) {
|
238
|
-
const connection =
|
267
|
+
const connection =
|
268
|
+
/** @type {ModuleGraphConnection} */
|
269
|
+
(this.getConnection(dependency));
|
239
270
|
const targetMgm = this._getModuleGraphModule(connection.module);
|
240
271
|
targetMgm.incomingConnections.delete(connection);
|
241
|
-
const originMgm = this._getModuleGraphModule(
|
242
|
-
|
272
|
+
const originMgm = this._getModuleGraphModule(
|
273
|
+
/** @type {Module} */ (connection.originModule)
|
274
|
+
);
|
275
|
+
/** @type {OutgoingConnections} */
|
276
|
+
(originMgm.outgoingConnections).delete(connection);
|
243
277
|
this._dependencyMap.set(dependency, null);
|
244
278
|
}
|
245
279
|
|
@@ -249,7 +283,9 @@ class ModuleGraph {
|
|
249
283
|
* @returns {void}
|
250
284
|
*/
|
251
285
|
addExplanation(dependency, explanation) {
|
252
|
-
const connection =
|
286
|
+
const connection =
|
287
|
+
/** @type {ModuleGraphConnection} */
|
288
|
+
(this.getConnection(dependency));
|
253
289
|
connection.addExplanation(explanation);
|
254
290
|
}
|
255
291
|
|
@@ -372,7 +408,7 @@ class ModuleGraph {
|
|
372
408
|
|
373
409
|
/**
|
374
410
|
* @param {Dependency} dependency the dependency to look for a referenced module
|
375
|
-
* @returns {Module} the referenced module
|
411
|
+
* @returns {Module | null} the referenced module
|
376
412
|
*/
|
377
413
|
getResolvedModule(dependency) {
|
378
414
|
const connection = this.getConnection(dependency);
|
@@ -395,7 +431,10 @@ class ModuleGraph {
|
|
395
431
|
) {
|
396
432
|
let foundConnection;
|
397
433
|
for (const connection of mgm._unassignedConnections) {
|
398
|
-
this._dependencyMap.set(
|
434
|
+
this._dependencyMap.set(
|
435
|
+
/** @type {Dependency} */ (connection.dependency),
|
436
|
+
connection
|
437
|
+
);
|
399
438
|
if (connection.dependency === dependency)
|
400
439
|
foundConnection = connection;
|
401
440
|
}
|
@@ -406,14 +445,14 @@ class ModuleGraph {
|
|
406
445
|
}
|
407
446
|
}
|
408
447
|
this._dependencyMap.set(dependency, null);
|
409
|
-
return
|
448
|
+
return;
|
410
449
|
}
|
411
450
|
return connection === null ? undefined : connection;
|
412
451
|
}
|
413
452
|
|
414
453
|
/**
|
415
454
|
* @param {Dependency} dependency the dependency to look for a referenced module
|
416
|
-
* @returns {Module} the referenced module
|
455
|
+
* @returns {Module | null} the referenced module
|
417
456
|
*/
|
418
457
|
getModule(dependency) {
|
419
458
|
const connection = this.getConnection(dependency);
|
@@ -422,7 +461,7 @@ class ModuleGraph {
|
|
422
461
|
|
423
462
|
/**
|
424
463
|
* @param {Dependency} dependency the dependency to look for a referencing module
|
425
|
-
* @returns {Module} the referencing module
|
464
|
+
* @returns {Module | null} the referencing module
|
426
465
|
*/
|
427
466
|
getOrigin(dependency) {
|
428
467
|
const connection = this.getConnection(dependency);
|
@@ -431,7 +470,7 @@ class ModuleGraph {
|
|
431
470
|
|
432
471
|
/**
|
433
472
|
* @param {Dependency} dependency the dependency to look for a referencing module
|
434
|
-
* @returns {Module} the original referencing module
|
473
|
+
* @returns {Module | null} the original referencing module
|
435
474
|
*/
|
436
475
|
getResolvedOrigin(dependency) {
|
437
476
|
const connection = this.getConnection(dependency);
|
@@ -458,7 +497,7 @@ class ModuleGraph {
|
|
458
497
|
|
459
498
|
/**
|
460
499
|
* @param {Module} module the module
|
461
|
-
* @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
|
500
|
+
* @returns {readonly Map<Module | undefined | null, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
|
462
501
|
*/
|
463
502
|
getIncomingConnectionsByOriginModule(module) {
|
464
503
|
const connections = this._getModuleGraphModule(module).incomingConnections;
|
@@ -478,7 +517,7 @@ class ModuleGraph {
|
|
478
517
|
|
479
518
|
/**
|
480
519
|
* @param {Module} module the module
|
481
|
-
* @returns {ModuleProfile |
|
520
|
+
* @returns {ModuleProfile | undefined} the module profile
|
482
521
|
*/
|
483
522
|
getProfile(module) {
|
484
523
|
const mgm = this._getModuleGraphModule(module);
|
@@ -487,7 +526,7 @@ class ModuleGraph {
|
|
487
526
|
|
488
527
|
/**
|
489
528
|
* @param {Module} module the module
|
490
|
-
* @param {ModuleProfile |
|
529
|
+
* @param {ModuleProfile | undefined} profile the module profile
|
491
530
|
* @returns {void}
|
492
531
|
*/
|
493
532
|
setProfile(module, profile) {
|
@@ -497,7 +536,7 @@ class ModuleGraph {
|
|
497
536
|
|
498
537
|
/**
|
499
538
|
* @param {Module} module the module
|
500
|
-
* @returns {Module | null} the issuer module
|
539
|
+
* @returns {Module | null | undefined} the issuer module
|
501
540
|
*/
|
502
541
|
getIssuer(module) {
|
503
542
|
const mgm = this._getModuleGraphModule(module);
|
@@ -601,7 +640,7 @@ class ModuleGraph {
|
|
601
640
|
|
602
641
|
/**
|
603
642
|
* @param {Module} module the module
|
604
|
-
* @returns {number} the index of the module
|
643
|
+
* @returns {number | null} the index of the module
|
605
644
|
*/
|
606
645
|
getPreOrderIndex(module) {
|
607
646
|
const mgm = this._getModuleGraphModule(module);
|
@@ -610,7 +649,7 @@ class ModuleGraph {
|
|
610
649
|
|
611
650
|
/**
|
612
651
|
* @param {Module} module the module
|
613
|
-
* @returns {number} the index of the module
|
652
|
+
* @returns {number | null} the index of the module
|
614
653
|
*/
|
615
654
|
getPostOrderIndex(module) {
|
616
655
|
const mgm = this._getModuleGraphModule(module);
|
@@ -667,7 +706,7 @@ class ModuleGraph {
|
|
667
706
|
|
668
707
|
/**
|
669
708
|
* @param {Module} module the module
|
670
|
-
* @returns {number} the depth of the module
|
709
|
+
* @returns {number | null} the depth of the module
|
671
710
|
*/
|
672
711
|
getDepth(module) {
|
673
712
|
const mgm = this._getModuleGraphModule(module);
|
@@ -718,20 +757,20 @@ class ModuleGraph {
|
|
718
757
|
|
719
758
|
/**
|
720
759
|
* @param {any} thing any thing
|
721
|
-
* @returns {
|
760
|
+
* @returns {object} metadata
|
722
761
|
*/
|
723
762
|
getMeta(thing) {
|
724
763
|
let meta = this._metaMap.get(thing);
|
725
764
|
if (meta === undefined) {
|
726
765
|
meta = Object.create(null);
|
727
|
-
this._metaMap.set(thing, meta);
|
766
|
+
this._metaMap.set(thing, /** @type {object} */ (meta));
|
728
767
|
}
|
729
|
-
return meta;
|
768
|
+
return /** @type {object} */ (meta);
|
730
769
|
}
|
731
770
|
|
732
771
|
/**
|
733
772
|
* @param {any} thing any thing
|
734
|
-
* @returns {
|
773
|
+
* @returns {object | undefined} metadata
|
735
774
|
*/
|
736
775
|
getMetaIfExisting(thing) {
|
737
776
|
return this._metaMap.get(thing);
|
@@ -779,7 +818,7 @@ class ModuleGraph {
|
|
779
818
|
const fn = args.pop();
|
780
819
|
if (this._moduleMemCaches && this._cacheStage) {
|
781
820
|
const memCache = this._moduleMemCaches.get(
|
782
|
-
this.getParentModule(dependency)
|
821
|
+
/** @type {Module} */ (this.getParentModule(dependency))
|
783
822
|
);
|
784
823
|
if (memCache !== undefined) {
|
785
824
|
return memCache.provide(dependency, this._cacheStage, ...args, () =>
|
@@ -812,12 +851,13 @@ class ModuleGraph {
|
|
812
851
|
const moduleGraph = moduleGraphForModuleMap.get(module);
|
813
852
|
if (!moduleGraph)
|
814
853
|
throw new Error(
|
815
|
-
|
816
|
-
|
854
|
+
`${
|
855
|
+
deprecateMessage
|
856
|
+
}There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
|
817
857
|
);
|
818
858
|
return moduleGraph;
|
819
859
|
},
|
820
|
-
deprecateMessage
|
860
|
+
`${deprecateMessage}: Use new ModuleGraph API`,
|
821
861
|
deprecationCode
|
822
862
|
);
|
823
863
|
deprecateMap.set(deprecateMessage, newFn);
|
@@ -6,6 +6,7 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
/** @typedef {import("./Dependency")} Dependency */
|
9
|
+
/** @typedef {import("./Dependency").GetConditionFn} GetConditionFn */
|
9
10
|
/** @typedef {import("./Module")} Module */
|
10
11
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
11
12
|
|
@@ -56,7 +57,7 @@ class ModuleGraphConnection {
|
|
56
57
|
* @param {Module} module the referenced module
|
57
58
|
* @param {string=} explanation some extra detail
|
58
59
|
* @param {boolean=} weak the reference is weak
|
59
|
-
* @param {false |
|
60
|
+
* @param {false | null | GetConditionFn | undefined} condition condition for the connection
|
60
61
|
*/
|
61
62
|
constructor(
|
62
63
|
originModule,
|
@@ -72,11 +73,11 @@ class ModuleGraphConnection {
|
|
72
73
|
this.resolvedModule = module;
|
73
74
|
this.module = module;
|
74
75
|
this.weak = weak;
|
75
|
-
this.conditional =
|
76
|
+
this.conditional = Boolean(condition);
|
76
77
|
this._active = condition !== false;
|
77
|
-
/** @type {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} */
|
78
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
|
78
79
|
this.condition = condition || undefined;
|
79
|
-
/** @type {Set<string>} */
|
80
|
+
/** @type {Set<string> | undefined} */
|
80
81
|
this.explanations = undefined;
|
81
82
|
if (explanation) {
|
82
83
|
this.explanations = new Set();
|
@@ -107,7 +108,9 @@ class ModuleGraphConnection {
|
|
107
108
|
*/
|
108
109
|
addCondition(condition) {
|
109
110
|
if (this.conditional) {
|
110
|
-
const old =
|
111
|
+
const old =
|
112
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */
|
113
|
+
(this.condition);
|
111
114
|
this.condition = (c, r) =>
|
112
115
|
intersectConnectionStates(old(c, r), condition(c, r));
|
113
116
|
} else if (this._active) {
|
@@ -132,18 +135,18 @@ class ModuleGraphConnection {
|
|
132
135
|
return Array.from(this.explanations).join(" ");
|
133
136
|
}
|
134
137
|
|
135
|
-
// TODO webpack 5 remove
|
136
|
-
get active() {
|
137
|
-
throw new Error("Use getActiveState instead");
|
138
|
-
}
|
139
|
-
|
140
138
|
/**
|
141
139
|
* @param {RuntimeSpec} runtime the runtime
|
142
140
|
* @returns {boolean} true, if the connection is active
|
143
141
|
*/
|
144
142
|
isActive(runtime) {
|
145
143
|
if (!this.conditional) return this._active;
|
146
|
-
|
144
|
+
|
145
|
+
return (
|
146
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
147
|
+
this.condition
|
148
|
+
)(this, runtime) !== false
|
149
|
+
);
|
147
150
|
}
|
148
151
|
|
149
152
|
/**
|
@@ -152,7 +155,11 @@ class ModuleGraphConnection {
|
|
152
155
|
*/
|
153
156
|
isTargetActive(runtime) {
|
154
157
|
if (!this.conditional) return this._active;
|
155
|
-
return
|
158
|
+
return (
|
159
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
160
|
+
this.condition
|
161
|
+
)(this, runtime) === true
|
162
|
+
);
|
156
163
|
}
|
157
164
|
|
158
165
|
/**
|
@@ -161,7 +168,9 @@ class ModuleGraphConnection {
|
|
161
168
|
*/
|
162
169
|
getActiveState(runtime) {
|
163
170
|
if (!this.conditional) return this._active;
|
164
|
-
return
|
171
|
+
return /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
172
|
+
this.condition
|
173
|
+
)(this, runtime);
|
165
174
|
}
|
166
175
|
|
167
176
|
/**
|
@@ -173,6 +182,11 @@ class ModuleGraphConnection {
|
|
173
182
|
this._active = value;
|
174
183
|
}
|
175
184
|
|
185
|
+
// TODO webpack 5 remove
|
186
|
+
get active() {
|
187
|
+
throw new Error("Use getActiveState instead");
|
188
|
+
}
|
189
|
+
|
176
190
|
set active(value) {
|
177
191
|
throw new Error("Use setActive instead");
|
178
192
|
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const WebpackError = require("./WebpackError");
|
9
|
+
|
10
|
+
/** @typedef {import("./Module")} Module */
|
11
|
+
|
12
|
+
class ModuleHashingError extends WebpackError {
|
13
|
+
/**
|
14
|
+
* Create a new ModuleHashingError
|
15
|
+
* @param {Module} module related module
|
16
|
+
* @param {Error} error Original error
|
17
|
+
*/
|
18
|
+
constructor(module, error) {
|
19
|
+
super();
|
20
|
+
|
21
|
+
this.name = "ModuleHashingError";
|
22
|
+
this.error = error;
|
23
|
+
this.message = error.message;
|
24
|
+
this.details = error.stack;
|
25
|
+
this.module = module;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
module.exports = ModuleHashingError;
|