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
@@ -17,35 +17,45 @@ const {
|
|
17
17
|
|
18
18
|
/** @typedef {import("webpack-sources").Source} Source */
|
19
19
|
/** @typedef {import("../Chunk")} Chunk */
|
20
|
+
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
21
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
22
|
+
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
23
|
+
/** @typedef {import("../Compilation")} Compilation */
|
20
24
|
/** @typedef {import("../Module")} Module */
|
25
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
21
26
|
/** @typedef {import("./ConsumeSharedModule")} ConsumeSharedModule */
|
22
27
|
|
23
28
|
class ConsumeSharedRuntimeModule extends RuntimeModule {
|
29
|
+
/**
|
30
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
31
|
+
*/
|
24
32
|
constructor(runtimeRequirements) {
|
25
33
|
super("consumes", RuntimeModule.STAGE_ATTACH);
|
26
34
|
this._runtimeRequirements = runtimeRequirements;
|
27
35
|
}
|
28
36
|
|
29
37
|
/**
|
30
|
-
* @returns {string} runtime code
|
38
|
+
* @returns {string | null} runtime code
|
31
39
|
*/
|
32
40
|
generate() {
|
33
|
-
const
|
41
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
42
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
34
43
|
const { runtimeTemplate, codeGenerationResults } = compilation;
|
44
|
+
/** @type {Record<ChunkId, (string | number)[]>} */
|
35
45
|
const chunkToModuleMapping = {};
|
36
46
|
/** @type {Map<string | number, Source>} */
|
37
47
|
const moduleIdToSourceMapping = new Map();
|
48
|
+
/** @type {(string | number)[]} */
|
38
49
|
const initialConsumes = [];
|
39
50
|
/**
|
40
|
-
*
|
41
51
|
* @param {Iterable<Module>} modules modules
|
42
52
|
* @param {Chunk} chunk the chunk
|
43
53
|
* @param {(string | number)[]} list list of ids
|
44
54
|
*/
|
45
55
|
const addModules = (modules, chunk, list) => {
|
46
56
|
for (const m of modules) {
|
47
|
-
const module =
|
48
|
-
const id = chunkGraph.getModuleId(module);
|
57
|
+
const module = m;
|
58
|
+
const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
|
49
59
|
list.push(id);
|
50
60
|
moduleIdToSourceMapping.set(
|
51
61
|
id,
|
@@ -57,15 +67,21 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
57
67
|
);
|
58
68
|
}
|
59
69
|
};
|
60
|
-
for (const chunk of this.chunk.getAllAsyncChunks()) {
|
70
|
+
for (const chunk of /** @type {Chunk} */ (this.chunk).getAllAsyncChunks()) {
|
61
71
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
62
72
|
chunk,
|
63
73
|
"consume-shared"
|
64
74
|
);
|
65
75
|
if (!modules) continue;
|
66
|
-
addModules(
|
76
|
+
addModules(
|
77
|
+
modules,
|
78
|
+
chunk,
|
79
|
+
(chunkToModuleMapping[/** @type {ChunkId} */ (chunk.id)] = [])
|
80
|
+
);
|
67
81
|
}
|
68
|
-
for (const chunk of
|
82
|
+
for (const chunk of /** @type {Chunk} */ (
|
83
|
+
this.chunk
|
84
|
+
).getAllInitialChunks()) {
|
69
85
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
70
86
|
chunk,
|
71
87
|
"consume-shared"
|
@@ -79,57 +95,39 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
79
95
|
versionLtRuntimeCode(runtimeTemplate),
|
80
96
|
rangeToStringRuntimeCode(runtimeTemplate),
|
81
97
|
satisfyRuntimeCode(runtimeTemplate),
|
82
|
-
`var
|
83
|
-
`
|
84
|
-
|
85
|
-
|
98
|
+
`var exists = ${runtimeTemplate.basicFunction("scope, key", [
|
99
|
+
`return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key);`
|
100
|
+
])}`,
|
101
|
+
`var get = ${runtimeTemplate.basicFunction("entry", [
|
102
|
+
"entry.loaded = 1;",
|
103
|
+
"return entry.get()"
|
86
104
|
])};`,
|
87
|
-
`var
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
105
|
+
`var eagerOnly = ${runtimeTemplate.basicFunction("versions", [
|
106
|
+
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
107
|
+
"filtered, version",
|
108
|
+
Template.indent([
|
109
|
+
"if (versions[version].eager) {",
|
110
|
+
Template.indent(["filtered[version] = versions[version];"]),
|
111
|
+
"}",
|
112
|
+
"return filtered;"
|
113
|
+
])
|
114
|
+
)}, {});`
|
94
115
|
])};`,
|
95
|
-
`var
|
96
|
-
"scope, key",
|
116
|
+
`var findLatestVersion = ${runtimeTemplate.basicFunction(
|
117
|
+
"scope, key, eager",
|
97
118
|
[
|
98
|
-
"var versions = scope[key];",
|
99
|
-
`
|
119
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
120
|
+
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
100
121
|
"a, b",
|
101
|
-
["return !a ||
|
102
|
-
)}, 0)
|
103
|
-
|
104
|
-
)};`,
|
105
|
-
`var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
|
106
|
-
"key, version, requiredVersion",
|
107
|
-
[
|
108
|
-
`return "Unsatisfied version " + version + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"`
|
109
|
-
]
|
110
|
-
)};`,
|
111
|
-
`var getSingletonVersion = ${runtimeTemplate.basicFunction(
|
112
|
-
"scope, scopeName, key, requiredVersion",
|
113
|
-
[
|
114
|
-
"var version = findSingletonVersionKey(scope, key);",
|
115
|
-
"if (!satisfy(requiredVersion, version)) " +
|
116
|
-
'typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(key, version, requiredVersion));',
|
117
|
-
"return get(scope[key][version]);"
|
118
|
-
]
|
119
|
-
)};`,
|
120
|
-
`var getStrictSingletonVersion = ${runtimeTemplate.basicFunction(
|
121
|
-
"scope, scopeName, key, requiredVersion",
|
122
|
-
[
|
123
|
-
"var version = findSingletonVersionKey(scope, key);",
|
124
|
-
"if (!satisfy(requiredVersion, version)) " +
|
125
|
-
"throw new Error(getInvalidSingletonVersionMessage(key, version, requiredVersion));",
|
126
|
-
"return get(scope[key][version]);"
|
122
|
+
["return !a || versionLt(a, b) ? b : a;"]
|
123
|
+
)}, 0);`,
|
124
|
+
"return key && versions[key];"
|
127
125
|
]
|
128
126
|
)};`,
|
129
|
-
`var
|
130
|
-
"scope, key, requiredVersion",
|
127
|
+
`var findSatisfyingVersion = ${runtimeTemplate.basicFunction(
|
128
|
+
"scope, key, requiredVersion, eager",
|
131
129
|
[
|
132
|
-
"var versions = scope[key];",
|
130
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
133
131
|
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
134
132
|
"a, b",
|
135
133
|
[
|
@@ -140,115 +138,127 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
140
138
|
"return key && versions[key]"
|
141
139
|
]
|
142
140
|
)};`,
|
143
|
-
`var
|
144
|
-
"scope,
|
141
|
+
`var findSingletonVersionKey = ${runtimeTemplate.basicFunction(
|
142
|
+
"scope, key, eager",
|
145
143
|
[
|
146
|
-
"var versions = scope[key];",
|
147
|
-
|
148
|
-
|
149
|
-
"
|
150
|
-
|
151
|
-
)}).join(", ");`
|
144
|
+
"var versions = eager ? eagerOnly(scope[key]) : scope[key];",
|
145
|
+
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
146
|
+
"a, b",
|
147
|
+
["return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;"]
|
148
|
+
)}, 0);`
|
152
149
|
]
|
153
150
|
)};`,
|
154
|
-
`var
|
155
|
-
"scope,
|
151
|
+
`var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
|
152
|
+
"scope, key, version, requiredVersion",
|
156
153
|
[
|
157
|
-
"
|
158
|
-
"if(entry) return get(entry);",
|
159
|
-
"throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
154
|
+
'return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"'
|
160
155
|
]
|
161
156
|
)};`,
|
162
|
-
`var
|
163
|
-
"scope, scopeName, key, requiredVersion",
|
157
|
+
`var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
|
158
|
+
"scope, scopeName, key, requiredVersion, eager",
|
164
159
|
[
|
165
|
-
|
160
|
+
"var versions = scope[key];",
|
161
|
+
'return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
|
162
|
+
`\t"Available versions: " + Object.keys(versions).map(${runtimeTemplate.basicFunction(
|
163
|
+
"key",
|
164
|
+
['return key + " from " + versions[key].from;']
|
165
|
+
)}).join(", ");`
|
166
166
|
]
|
167
167
|
)};`,
|
168
|
-
`var
|
169
|
-
"
|
170
|
-
|
171
|
-
|
168
|
+
`var fail = ${runtimeTemplate.basicFunction("msg", [
|
169
|
+
"throw new Error(msg);"
|
170
|
+
])}`,
|
171
|
+
`var failAsNotExist = ${runtimeTemplate.basicFunction("scopeName, key", [
|
172
|
+
'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
|
173
|
+
])}`,
|
174
|
+
`var warn = /*#__PURE__*/ ${
|
175
|
+
compilation.outputOptions.ignoreBrowserWarnings
|
176
|
+
? runtimeTemplate.basicFunction("", "")
|
177
|
+
: runtimeTemplate.basicFunction("msg", [
|
178
|
+
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
179
|
+
])
|
180
|
+
};`,
|
172
181
|
`var init = ${runtimeTemplate.returningFunction(
|
173
182
|
Template.asString([
|
174
|
-
"function(scopeName,
|
183
|
+
"function(scopeName, key, eager, c, d) {",
|
175
184
|
Template.indent([
|
176
185
|
`var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
|
177
|
-
|
178
|
-
|
186
|
+
// if we require eager shared, we expect it to be already loaded before it requested, no need to wait the whole scope loaded.
|
187
|
+
"if (promise && promise.then && !eager) { ",
|
188
|
+
Template.indent([
|
189
|
+
`return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, false, c, d));`
|
190
|
+
]),
|
191
|
+
"}",
|
192
|
+
`return fn(scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, eager, c, d);`
|
179
193
|
]),
|
180
194
|
"}"
|
181
195
|
]),
|
182
196
|
"fn"
|
183
197
|
)};`,
|
184
198
|
"",
|
199
|
+
`var useFallback = ${runtimeTemplate.basicFunction(
|
200
|
+
"scopeName, key, fallback",
|
201
|
+
["return fallback ? fallback() : failAsNotExist(scopeName, key);"]
|
202
|
+
)}`,
|
185
203
|
`var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
186
|
-
"scopeName, scope, key",
|
187
|
-
[
|
188
|
-
"ensureExistence(scopeName, key);",
|
189
|
-
"return get(findVersion(scope, key));"
|
190
|
-
]
|
191
|
-
)});`,
|
192
|
-
`var loadFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
193
|
-
"scopeName, scope, key, fallback",
|
204
|
+
"scopeName, scope, key, eager, fallback",
|
194
205
|
[
|
195
|
-
|
206
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
207
|
+
"return get(findLatestVersion(scope, key, eager));"
|
196
208
|
]
|
197
209
|
)});`,
|
198
|
-
`var
|
199
|
-
"scopeName, scope, key,
|
210
|
+
`var loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
211
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
200
212
|
[
|
201
|
-
"
|
202
|
-
"
|
213
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
214
|
+
"var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
|
215
|
+
"if (satisfyingVersion) return get(satisfyingVersion);",
|
216
|
+
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))",
|
217
|
+
"return get(findLatestVersion(scope, key, eager));"
|
203
218
|
]
|
204
219
|
)});`,
|
205
|
-
`var
|
206
|
-
"scopeName, scope, key,
|
220
|
+
`var loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
221
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
207
222
|
[
|
208
|
-
"
|
209
|
-
"
|
223
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
224
|
+
"var satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);",
|
225
|
+
"if (satisfyingVersion) return get(satisfyingVersion);",
|
226
|
+
"if (fallback) return fallback();",
|
227
|
+
"fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));"
|
210
228
|
]
|
211
229
|
)});`,
|
212
|
-
`var
|
213
|
-
"scopeName, scope, key,
|
230
|
+
`var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
231
|
+
"scopeName, scope, key, eager, fallback",
|
214
232
|
[
|
215
|
-
"
|
216
|
-
"
|
217
|
-
|
218
|
-
)});`,
|
219
|
-
`var loadStrictSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
220
|
-
"scopeName, scope, key, version",
|
221
|
-
[
|
222
|
-
"ensureExistence(scopeName, key);",
|
223
|
-
"return getStrictSingletonVersion(scope, scopeName, key, version);"
|
224
|
-
]
|
225
|
-
)});`,
|
226
|
-
`var loadVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
227
|
-
"scopeName, scope, key, version, fallback",
|
228
|
-
[
|
229
|
-
`if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,
|
230
|
-
"return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));"
|
231
|
-
]
|
232
|
-
)});`,
|
233
|
-
`var loadSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
234
|
-
"scopeName, scope, key, version, fallback",
|
235
|
-
[
|
236
|
-
`if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,
|
237
|
-
"return getSingletonVersion(scope, scopeName, key, version);"
|
233
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
234
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
235
|
+
"return get(scope[key][version]);"
|
238
236
|
]
|
239
237
|
)});`,
|
240
|
-
`var
|
241
|
-
"scopeName, scope, key,
|
238
|
+
`var loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
239
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
242
240
|
[
|
243
|
-
|
244
|
-
|
241
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
242
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
243
|
+
"if (!satisfy(requiredVersion, version)) {",
|
244
|
+
Template.indent([
|
245
|
+
"warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
246
|
+
]),
|
247
|
+
"}",
|
248
|
+
"return get(scope[key][version]);"
|
245
249
|
]
|
246
250
|
)});`,
|
247
|
-
`var
|
248
|
-
"scopeName, scope, key,
|
251
|
+
`var loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
252
|
+
"scopeName, scope, key, eager, requiredVersion, fallback",
|
249
253
|
[
|
250
|
-
|
251
|
-
"
|
254
|
+
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
255
|
+
"var version = findSingletonVersionKey(scope, key, eager);",
|
256
|
+
"if (!satisfy(requiredVersion, version)) {",
|
257
|
+
Template.indent([
|
258
|
+
"fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
259
|
+
]),
|
260
|
+
"}",
|
261
|
+
"return get(scope[key][version]);"
|
252
262
|
]
|
253
263
|
)});`,
|
254
264
|
"var installedModules = {};",
|
@@ -273,10 +283,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
273
283
|
`delete ${RuntimeGlobals.moduleCache}[id];`,
|
274
284
|
"var factory = moduleToHandlerMapping[id]();",
|
275
285
|
'if(typeof factory !== "function") throw new Error("Shared module is not available for eager consumption: " + id);',
|
276
|
-
|
286
|
+
"module.exports = factory();"
|
277
287
|
])}`
|
278
288
|
])});`
|
279
|
-
|
289
|
+
])
|
280
290
|
: "// no consumes in initial chunks",
|
281
291
|
this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)
|
282
292
|
? Template.asString([
|
@@ -285,6 +295,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
285
295
|
null,
|
286
296
|
"\t"
|
287
297
|
)};`,
|
298
|
+
"var startedInstallModules = {};",
|
288
299
|
`${
|
289
300
|
RuntimeGlobals.ensureChunkHandlers
|
290
301
|
}.consumes = ${runtimeTemplate.basicFunction("chunkId, promises", [
|
@@ -294,6 +305,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
294
305
|
"id",
|
295
306
|
[
|
296
307
|
`if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,
|
308
|
+
"if(!startedInstallModules[id]) {",
|
297
309
|
`var onFactory = ${runtimeTemplate.basicFunction(
|
298
310
|
"factory",
|
299
311
|
[
|
@@ -306,6 +318,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
306
318
|
])}`
|
307
319
|
]
|
308
320
|
)};`,
|
321
|
+
"startedInstallModules[id] = true;",
|
309
322
|
`var onError = ${runtimeTemplate.basicFunction("error", [
|
310
323
|
"delete installedModules[id];",
|
311
324
|
`${
|
@@ -320,17 +333,18 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
320
333
|
"var promise = moduleToHandlerMapping[id]();",
|
321
334
|
"if(promise.then) {",
|
322
335
|
Template.indent(
|
323
|
-
|
336
|
+
"promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));"
|
324
337
|
),
|
325
338
|
"} else onFactory(promise);"
|
326
339
|
]),
|
327
|
-
"} catch(e) { onError(e); }"
|
340
|
+
"} catch(e) { onError(e); }",
|
341
|
+
"}"
|
328
342
|
]
|
329
343
|
)});`
|
330
344
|
]),
|
331
345
|
"}"
|
332
346
|
])}`
|
333
|
-
|
347
|
+
])
|
334
348
|
: "// no chunk loading of consumes"
|
335
349
|
]);
|
336
350
|
}
|
@@ -8,7 +8,17 @@
|
|
8
8
|
const Dependency = require("../Dependency");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
|
11
14
|
class ProvideSharedDependency extends Dependency {
|
15
|
+
/**
|
16
|
+
* @param {string} shareScope share scope
|
17
|
+
* @param {string} name module name
|
18
|
+
* @param {string | false} version version
|
19
|
+
* @param {string} request request
|
20
|
+
* @param {boolean} eager true, if this is an eager dependency
|
21
|
+
*/
|
12
22
|
constructor(shareScope, name, version, request, eager) {
|
13
23
|
super();
|
14
24
|
this.shareScope = shareScope;
|
@@ -31,6 +41,9 @@ class ProvideSharedDependency extends Dependency {
|
|
31
41
|
} @ ${this.version}${this.eager ? " (eager)" : ""}`;
|
32
42
|
}
|
33
43
|
|
44
|
+
/**
|
45
|
+
* @param {ObjectSerializerContext} context context
|
46
|
+
*/
|
34
47
|
serialize(context) {
|
35
48
|
context.write(this.shareScope);
|
36
49
|
context.write(this.name);
|
@@ -40,6 +53,10 @@ class ProvideSharedDependency extends Dependency {
|
|
40
53
|
super.serialize(context);
|
41
54
|
}
|
42
55
|
|
56
|
+
/**
|
57
|
+
* @param {ObjectDeserializerContext} context context
|
58
|
+
* @returns {ProvideSharedDependency} deserialize fallback dependency
|
59
|
+
*/
|
43
60
|
static deserialize(context) {
|
44
61
|
const { read } = context;
|
45
62
|
const obj = new ProvideSharedDependency(
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
9
9
|
const Module = require("../Module");
|
10
|
+
const { WEBPACK_MODULE_TYPE_PROVIDE } = require("../ModuleTypeConstants");
|
10
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
12
13
|
const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
@@ -20,9 +21,12 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
|
20
21
|
/** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
|
21
22
|
/** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
|
22
23
|
/** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
|
24
|
+
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
23
25
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
24
26
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
25
27
|
/** @typedef {import("../WebpackError")} WebpackError */
|
28
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
29
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
26
30
|
/** @typedef {import("../util/Hash")} Hash */
|
27
31
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
28
32
|
|
@@ -37,7 +41,7 @@ class ProvideSharedModule extends Module {
|
|
37
41
|
* @param {boolean} eager include the module in sync way
|
38
42
|
*/
|
39
43
|
constructor(shareScope, name, version, request, eager) {
|
40
|
-
super(
|
44
|
+
super(WEBPACK_MODULE_TYPE_PROVIDE);
|
41
45
|
this._shareScope = shareScope;
|
42
46
|
this._name = name;
|
43
47
|
this._version = version;
|
@@ -67,12 +71,14 @@ class ProvideSharedModule extends Module {
|
|
67
71
|
* @returns {string | null} an identifier for library inclusion
|
68
72
|
*/
|
69
73
|
libIdent(options) {
|
70
|
-
return `webpack/sharing/provide/${
|
74
|
+
return `${this.layer ? `(${this.layer})/` : ""}webpack/sharing/provide/${
|
75
|
+
this._shareScope
|
76
|
+
}/${this._name}`;
|
71
77
|
}
|
72
78
|
|
73
79
|
/**
|
74
80
|
* @param {NeedBuildContext} context context info
|
75
|
-
* @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
81
|
+
* @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
76
82
|
* @returns {void}
|
77
83
|
*/
|
78
84
|
needBuild(context, callback) {
|
@@ -115,7 +121,7 @@ class ProvideSharedModule extends Module {
|
|
115
121
|
}
|
116
122
|
|
117
123
|
/**
|
118
|
-
* @returns {
|
124
|
+
* @returns {SourceTypes} types available (do not mutate)
|
119
125
|
*/
|
120
126
|
getSourceTypes() {
|
121
127
|
return TYPES;
|
@@ -136,13 +142,13 @@ class ProvideSharedModule extends Module {
|
|
136
142
|
chunkGraph,
|
137
143
|
request: this._request,
|
138
144
|
runtimeRequirements
|
139
|
-
|
145
|
+
})
|
140
146
|
: runtimeTemplate.asyncModuleFactory({
|
141
147
|
block: this.blocks[0],
|
142
148
|
chunkGraph,
|
143
149
|
request: this._request,
|
144
150
|
runtimeRequirements
|
145
|
-
|
151
|
+
})
|
146
152
|
}${this._eager ? ", 1" : ""});`;
|
147
153
|
const sources = new Map();
|
148
154
|
const data = new Map();
|
@@ -156,6 +162,9 @@ class ProvideSharedModule extends Module {
|
|
156
162
|
return { sources, data, runtimeRequirements };
|
157
163
|
}
|
158
164
|
|
165
|
+
/**
|
166
|
+
* @param {ObjectSerializerContext} context context
|
167
|
+
*/
|
159
168
|
serialize(context) {
|
160
169
|
const { write } = context;
|
161
170
|
write(this._shareScope);
|
@@ -166,6 +175,10 @@ class ProvideSharedModule extends Module {
|
|
166
175
|
super.serialize(context);
|
167
176
|
}
|
168
177
|
|
178
|
+
/**
|
179
|
+
* @param {ObjectDeserializerContext} context context
|
180
|
+
* @returns {ProvideSharedModule} deserialize fallback dependency
|
181
|
+
*/
|
169
182
|
static deserialize(context) {
|
170
183
|
const { read } = context;
|
171
184
|
const obj = new ProvideSharedModule(read(), read(), read(), read(), read());
|
@@ -15,7 +15,7 @@ const ProvideSharedModule = require("./ProvideSharedModule");
|
|
15
15
|
class ProvideSharedModuleFactory extends ModuleFactory {
|
16
16
|
/**
|
17
17
|
* @param {ModuleFactoryCreateData} data data object
|
18
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
18
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
19
19
|
* @returns {void}
|
20
20
|
*/
|
21
21
|
create(data, callback) {
|