webpack 5.76.1 → 5.88.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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +4 -0
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- 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 +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- 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 +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- 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 +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +194 -194
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- 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 +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- 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 +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +6 -0
- package/lib/util/StringXor.js +51 -0
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +14 -1
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- 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 +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +132 -5
- 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/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1608 -667
@@ -181,6 +181,7 @@ const serialize = async (
|
|
181
181
|
SerializerMiddleware.setLazySerializedValue(lazy, buf);
|
182
182
|
return buf;
|
183
183
|
});
|
184
|
+
/** @type {number[]} */
|
184
185
|
const lengths = [];
|
185
186
|
for (const item of resolvedData) {
|
186
187
|
if (Array.isArray(item)) {
|
@@ -203,6 +204,7 @@ const serialize = async (
|
|
203
204
|
for (let i = 0; i < lengths.length; i++) {
|
204
205
|
header.writeInt32LE(lengths[i], 8 + i * 4);
|
205
206
|
}
|
207
|
+
/** @type {Buffer[]} */
|
206
208
|
const buf = [header];
|
207
209
|
for (const item of resolvedData) {
|
208
210
|
if (Array.isArray(item)) {
|
@@ -247,6 +249,9 @@ const deserialize = async (middleware, name, readFile) => {
|
|
247
249
|
contentItemLength = contentItem.length;
|
248
250
|
contentPosition = 0;
|
249
251
|
};
|
252
|
+
/**
|
253
|
+
* @param {number} n number of bytes to ensure
|
254
|
+
*/
|
250
255
|
const ensureData = n => {
|
251
256
|
if (contentPosition === contentItemLength) {
|
252
257
|
nextContent();
|
@@ -274,18 +279,28 @@ const deserialize = async (middleware, name, readFile) => {
|
|
274
279
|
contentPosition = 0;
|
275
280
|
}
|
276
281
|
};
|
282
|
+
/**
|
283
|
+
* @returns {number} value value
|
284
|
+
*/
|
277
285
|
const readUInt32LE = () => {
|
278
286
|
ensureData(4);
|
279
287
|
const value = contentItem.readUInt32LE(contentPosition);
|
280
288
|
contentPosition += 4;
|
281
289
|
return value;
|
282
290
|
};
|
291
|
+
/**
|
292
|
+
* @returns {number} value value
|
293
|
+
*/
|
283
294
|
const readInt32LE = () => {
|
284
295
|
ensureData(4);
|
285
296
|
const value = contentItem.readInt32LE(contentPosition);
|
286
297
|
contentPosition += 4;
|
287
298
|
return value;
|
288
299
|
};
|
300
|
+
/**
|
301
|
+
* @param {number} l length
|
302
|
+
* @returns {Buffer} buffer
|
303
|
+
*/
|
289
304
|
const readSlice = l => {
|
290
305
|
ensureData(l);
|
291
306
|
if (contentPosition === 0 && contentItemLength === l) {
|
@@ -556,7 +571,9 @@ class FileMiddleware extends SerializerMiddleware {
|
|
556
571
|
return;
|
557
572
|
}
|
558
573
|
let remaining = /** @type {number} */ (stats.size);
|
574
|
+
/** @type {Buffer | undefined} */
|
559
575
|
let currentBuffer;
|
576
|
+
/** @type {number | undefined} */
|
560
577
|
let currentBufferUsed;
|
561
578
|
const buf = [];
|
562
579
|
let decompression;
|
@@ -4,25 +4,41 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
|
+
|
7
10
|
class MapObjectSerializer {
|
8
|
-
|
9
|
-
|
11
|
+
/**
|
12
|
+
* @template K, V
|
13
|
+
* @param {Map<K, V>} obj map
|
14
|
+
* @param {ObjectSerializerContext} context context
|
15
|
+
*/
|
16
|
+
serialize(obj, context) {
|
17
|
+
context.write(obj.size);
|
10
18
|
for (const key of obj.keys()) {
|
11
|
-
write(key);
|
19
|
+
context.write(key);
|
12
20
|
}
|
13
21
|
for (const value of obj.values()) {
|
14
|
-
write(value);
|
22
|
+
context.write(value);
|
15
23
|
}
|
16
24
|
}
|
17
|
-
|
18
|
-
|
25
|
+
/**
|
26
|
+
* @template K, V
|
27
|
+
* @param {ObjectDeserializerContext} context context
|
28
|
+
* @returns {Map<K, V>} map
|
29
|
+
*/
|
30
|
+
deserialize(context) {
|
31
|
+
/** @type {number} */
|
32
|
+
let size = context.read();
|
33
|
+
/** @type {Map<K, V>} */
|
19
34
|
const map = new Map();
|
35
|
+
/** @type {K[]} */
|
20
36
|
const keys = [];
|
21
37
|
for (let i = 0; i < size; i++) {
|
22
|
-
keys.push(read());
|
38
|
+
keys.push(context.read());
|
23
39
|
}
|
24
40
|
for (let i = 0; i < size; i++) {
|
25
|
-
map.set(keys[i], read());
|
41
|
+
map.set(keys[i], context.read());
|
26
42
|
}
|
27
43
|
return map;
|
28
44
|
}
|
@@ -4,27 +4,44 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
|
+
|
7
10
|
class NullPrototypeObjectSerializer {
|
8
|
-
|
11
|
+
/**
|
12
|
+
* @template {Object} T
|
13
|
+
* @param {T} obj null object
|
14
|
+
* @param {ObjectSerializerContext} context context
|
15
|
+
*/
|
16
|
+
serialize(obj, context) {
|
17
|
+
/** @type {string[]} */
|
9
18
|
const keys = Object.keys(obj);
|
10
19
|
for (const key of keys) {
|
11
|
-
write(key);
|
20
|
+
context.write(key);
|
12
21
|
}
|
13
|
-
write(null);
|
22
|
+
context.write(null);
|
14
23
|
for (const key of keys) {
|
15
|
-
write(obj[key]);
|
24
|
+
context.write(obj[key]);
|
16
25
|
}
|
17
26
|
}
|
18
|
-
|
27
|
+
/**
|
28
|
+
* @template {Object} T
|
29
|
+
* @param {ObjectDeserializerContext} context context
|
30
|
+
* @returns {T} null object
|
31
|
+
*/
|
32
|
+
deserialize(context) {
|
33
|
+
/** @type {T} */
|
19
34
|
const obj = Object.create(null);
|
35
|
+
/** @type {string[]} */
|
20
36
|
const keys = [];
|
21
|
-
|
37
|
+
/** @type {string | null} */
|
38
|
+
let key = context.read();
|
22
39
|
while (key !== null) {
|
23
40
|
keys.push(key);
|
24
|
-
key = read();
|
41
|
+
key = context.read();
|
25
42
|
}
|
26
43
|
for (const key of keys) {
|
27
|
-
obj[key] = read();
|
44
|
+
obj[key] = context.read();
|
28
45
|
}
|
29
46
|
return obj;
|
30
47
|
}
|
@@ -46,11 +46,13 @@ Technically any value can be used.
|
|
46
46
|
/**
|
47
47
|
* @typedef {Object} ObjectSerializerContext
|
48
48
|
* @property {function(any): void} write
|
49
|
+
* @property {function(any): void} setCircularReference
|
49
50
|
*/
|
50
51
|
|
51
52
|
/**
|
52
53
|
* @typedef {Object} ObjectDeserializerContext
|
53
54
|
* @property {function(): any} read
|
55
|
+
* @property {function(any): void} setCircularReference
|
54
56
|
*/
|
55
57
|
|
56
58
|
/**
|
@@ -59,6 +61,11 @@ Technically any value can be used.
|
|
59
61
|
* @property {function(ObjectDeserializerContext): any} deserialize
|
60
62
|
*/
|
61
63
|
|
64
|
+
/**
|
65
|
+
* @template T
|
66
|
+
* @param {Set<T>} set set
|
67
|
+
* @param {number} size count of items to keep
|
68
|
+
*/
|
62
69
|
const setSetSize = (set, size) => {
|
63
70
|
let i = 0;
|
64
71
|
for (const item of set) {
|
@@ -68,6 +75,11 @@ const setSetSize = (set, size) => {
|
|
68
75
|
}
|
69
76
|
};
|
70
77
|
|
78
|
+
/**
|
79
|
+
* @template K, X
|
80
|
+
* @param {Map<K, X>} map map
|
81
|
+
* @param {number} size count of items to keep
|
82
|
+
*/
|
71
83
|
const setMapSize = (map, size) => {
|
72
84
|
let i = 0;
|
73
85
|
for (const item of map.keys()) {
|
@@ -95,9 +107,12 @@ const ESCAPE_UNDEFINED = false;
|
|
95
107
|
|
96
108
|
const CURRENT_VERSION = 2;
|
97
109
|
|
110
|
+
/** @type {Map<Constructor, { request?: string, name?: string | number | null, serializer?: ObjectSerializer }>} */
|
98
111
|
const serializers = new Map();
|
112
|
+
/** @type {Map<string | number, ObjectSerializer>} */
|
99
113
|
const serializerInversed = new Map();
|
100
114
|
|
115
|
+
/** @type {Set<string>} */
|
101
116
|
const loadedRequests = new Set();
|
102
117
|
|
103
118
|
const NOT_SERIALIZABLE = {};
|
@@ -143,7 +158,10 @@ if (exports.constructor !== Object) {
|
|
143
158
|
}
|
144
159
|
|
145
160
|
for (const { request, name, serializer } of serializers.values()) {
|
146
|
-
serializerInversed.set(
|
161
|
+
serializerInversed.set(
|
162
|
+
`${request}/${name}`,
|
163
|
+
/** @type {ObjectSerializer} */ (serializer)
|
164
|
+
);
|
147
165
|
}
|
148
166
|
|
149
167
|
/** @type {Map<RegExp, (request: string) => boolean>} */
|
@@ -176,7 +194,7 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
176
194
|
/**
|
177
195
|
* @param {Constructor} Constructor the constructor
|
178
196
|
* @param {string} request the request which will be required when deserializing
|
179
|
-
* @param {string} name the name to make multiple serializer unique when sharing a request
|
197
|
+
* @param {string | null} name the name to make multiple serializer unique when sharing a request
|
180
198
|
* @param {ObjectSerializer} serializer the serializer
|
181
199
|
* @returns {void}
|
182
200
|
*/
|
@@ -240,6 +258,11 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
240
258
|
return config;
|
241
259
|
}
|
242
260
|
|
261
|
+
/**
|
262
|
+
* @param {string} request request
|
263
|
+
* @param {TODO} name name
|
264
|
+
* @returns {ObjectSerializer} serializer
|
265
|
+
*/
|
243
266
|
static getDeserializerFor(request, name) {
|
244
267
|
const key = request + "/" + name;
|
245
268
|
const serializer = serializerInversed.get(key);
|
@@ -251,6 +274,11 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
251
274
|
return serializer;
|
252
275
|
}
|
253
276
|
|
277
|
+
/**
|
278
|
+
* @param {string} request request
|
279
|
+
* @param {TODO} name name
|
280
|
+
* @returns {ObjectSerializer} serializer
|
281
|
+
*/
|
254
282
|
static _getDeserializerForWithoutError(request, name) {
|
255
283
|
const key = request + "/" + name;
|
256
284
|
const serializer = serializerInversed.get(key);
|
@@ -372,6 +400,9 @@ class ObjectMiddleware extends SerializerMiddleware {
|
|
372
400
|
", "
|
373
401
|
)} }`;
|
374
402
|
}
|
403
|
+
if (typeof item === "bigint") {
|
404
|
+
return `BigInt ${item}n`;
|
405
|
+
}
|
375
406
|
try {
|
376
407
|
return `${item}`;
|
377
408
|
} catch (e) {
|
@@ -4,6 +4,9 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
|
+
|
7
10
|
const cache = new WeakMap();
|
8
11
|
|
9
12
|
class ObjectStructure {
|
@@ -41,37 +44,45 @@ const getCachedKeys = (keys, cacheAssoc) => {
|
|
41
44
|
};
|
42
45
|
|
43
46
|
class PlainObjectSerializer {
|
44
|
-
|
47
|
+
/**
|
48
|
+
* @param {Object} obj plain object
|
49
|
+
* @param {ObjectSerializerContext} context context
|
50
|
+
*/
|
51
|
+
serialize(obj, context) {
|
45
52
|
const keys = Object.keys(obj);
|
46
53
|
if (keys.length > 128) {
|
47
54
|
// Objects with so many keys are unlikely to share structure
|
48
55
|
// with other objects
|
49
|
-
write(keys);
|
56
|
+
context.write(keys);
|
50
57
|
for (const key of keys) {
|
51
|
-
write(obj[key]);
|
58
|
+
context.write(obj[key]);
|
52
59
|
}
|
53
60
|
} else if (keys.length > 1) {
|
54
|
-
write(getCachedKeys(keys, write));
|
61
|
+
context.write(getCachedKeys(keys, context.write));
|
55
62
|
for (const key of keys) {
|
56
|
-
write(obj[key]);
|
63
|
+
context.write(obj[key]);
|
57
64
|
}
|
58
65
|
} else if (keys.length === 1) {
|
59
66
|
const key = keys[0];
|
60
|
-
write(key);
|
61
|
-
write(obj[key]);
|
67
|
+
context.write(key);
|
68
|
+
context.write(obj[key]);
|
62
69
|
} else {
|
63
|
-
write(null);
|
70
|
+
context.write(null);
|
64
71
|
}
|
65
72
|
}
|
66
|
-
|
67
|
-
|
73
|
+
/**
|
74
|
+
* @param {ObjectDeserializerContext} context context
|
75
|
+
* @returns {Object} plain object
|
76
|
+
*/
|
77
|
+
deserialize(context) {
|
78
|
+
const keys = context.read();
|
68
79
|
const obj = {};
|
69
80
|
if (Array.isArray(keys)) {
|
70
81
|
for (const key of keys) {
|
71
|
-
obj[key] = read();
|
82
|
+
obj[key] = context.read();
|
72
83
|
}
|
73
84
|
} else if (keys !== null) {
|
74
|
-
obj[keys] = read();
|
85
|
+
obj[keys] = context.read();
|
75
86
|
}
|
76
87
|
return obj;
|
77
88
|
}
|
@@ -4,13 +4,24 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
|
+
|
7
10
|
class RegExpObjectSerializer {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
+
/**
|
12
|
+
* @param {RegExp} obj regexp
|
13
|
+
* @param {ObjectSerializerContext} context context
|
14
|
+
*/
|
15
|
+
serialize(obj, context) {
|
16
|
+
context.write(obj.source);
|
17
|
+
context.write(obj.flags);
|
11
18
|
}
|
12
|
-
|
13
|
-
|
19
|
+
/**
|
20
|
+
* @param {ObjectDeserializerContext} context context
|
21
|
+
* @returns {RegExp} regexp
|
22
|
+
*/
|
23
|
+
deserialize(context) {
|
24
|
+
return new RegExp(context.read(), context.read());
|
14
25
|
}
|
15
26
|
}
|
16
27
|
|
@@ -4,18 +4,33 @@
|
|
4
4
|
|
5
5
|
"use strict";
|
6
6
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
9
|
+
|
7
10
|
class SetObjectSerializer {
|
8
|
-
|
9
|
-
|
11
|
+
/**
|
12
|
+
* @template T
|
13
|
+
* @param {Set<T>} obj set
|
14
|
+
* @param {ObjectSerializerContext} context context
|
15
|
+
*/
|
16
|
+
serialize(obj, context) {
|
17
|
+
context.write(obj.size);
|
10
18
|
for (const value of obj) {
|
11
|
-
write(value);
|
19
|
+
context.write(value);
|
12
20
|
}
|
13
21
|
}
|
14
|
-
|
15
|
-
|
22
|
+
/**
|
23
|
+
* @template T
|
24
|
+
* @param {ObjectDeserializerContext} context context
|
25
|
+
* @returns {Set<T>} date
|
26
|
+
*/
|
27
|
+
deserialize(context) {
|
28
|
+
/** @type {number} */
|
29
|
+
let size = context.read();
|
30
|
+
/** @type {Set<T>} */
|
16
31
|
const set = new Set();
|
17
32
|
for (let i = 0; i < size; i++) {
|
18
|
-
set.add(read());
|
33
|
+
set.add(context.read());
|
19
34
|
}
|
20
35
|
return set;
|
21
36
|
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
/** @typedef {undefined|null|number|string|boolean|Buffer|Object|(() => ComplexSerializableType[] | Promise<ComplexSerializableType[]>)} ComplexSerializableType */
|
8
8
|
|
9
|
-
/** @typedef {undefined|null|number|string|boolean|Buffer|(() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>)} PrimitiveSerializableType */
|
9
|
+
/** @typedef {undefined|null|number|bigint|string|boolean|Buffer|(() => PrimitiveSerializableType[] | Promise<PrimitiveSerializableType[]>)} PrimitiveSerializableType */
|
10
10
|
|
11
11
|
/** @typedef {Buffer|(() => BufferSerializableType[] | Promise<BufferSerializableType[]>)} BufferSerializableType */
|
12
12
|
|
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
class ConsumeSharedFallbackDependency extends ModuleDependency {
|
12
|
+
/**
|
13
|
+
* @param {string} request the request
|
14
|
+
*/
|
12
15
|
constructor(request) {
|
13
16
|
super(request);
|
14
17
|
}
|
@@ -8,6 +8,9 @@
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
9
9
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
10
10
|
const Module = require("../Module");
|
11
|
+
const {
|
12
|
+
WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE
|
13
|
+
} = require("../ModuleTypeConstants");
|
11
14
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
12
15
|
const makeSerializable = require("../util/makeSerializable");
|
13
16
|
const { rangeToString, stringifyHoley } = require("../util/semver");
|
@@ -25,6 +28,8 @@ const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependen
|
|
25
28
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
26
29
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
27
30
|
/** @typedef {import("../WebpackError")} WebpackError */
|
31
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
32
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
28
33
|
/** @typedef {import("../util/Hash")} Hash */
|
29
34
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
30
35
|
/** @typedef {import("../util/semver").SemVerRange} SemVerRange */
|
@@ -50,7 +55,7 @@ class ConsumeSharedModule extends Module {
|
|
50
55
|
* @param {ConsumeOptions} options consume options
|
51
56
|
*/
|
52
57
|
constructor(context, options) {
|
53
|
-
super(
|
58
|
+
super(WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE, context);
|
54
59
|
this.options = options;
|
55
60
|
}
|
56
61
|
|
@@ -67,7 +72,7 @@ class ConsumeSharedModule extends Module {
|
|
67
72
|
singleton,
|
68
73
|
eager
|
69
74
|
} = this.options;
|
70
|
-
return
|
75
|
+
return `${WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE}|${shareScope}|${shareKey}|${
|
71
76
|
requiredVersion && rangeToString(requiredVersion)
|
72
77
|
}|${strictVersion}|${importResolved}|${singleton}|${eager}`;
|
73
78
|
}
|
@@ -230,12 +235,18 @@ class ConsumeSharedModule extends Module {
|
|
230
235
|
};
|
231
236
|
}
|
232
237
|
|
238
|
+
/**
|
239
|
+
* @param {ObjectSerializerContext} context context
|
240
|
+
*/
|
233
241
|
serialize(context) {
|
234
242
|
const { write } = context;
|
235
243
|
write(this.options);
|
236
244
|
super.serialize(context);
|
237
245
|
}
|
238
246
|
|
247
|
+
/**
|
248
|
+
* @param {ObjectDeserializerContext} context context
|
249
|
+
*/
|
239
250
|
deserialize(context) {
|
240
251
|
const { read } = context;
|
241
252
|
this.options = read();
|
@@ -224,6 +224,10 @@ class ConsumeSharedPlugin {
|
|
224
224
|
);
|
225
225
|
return resolve();
|
226
226
|
}
|
227
|
+
if (data.name === packageName) {
|
228
|
+
// Package self-referencing
|
229
|
+
return resolve();
|
230
|
+
}
|
227
231
|
const requiredVersion = getRequiredVersionFromDescriptionFile(
|
228
232
|
data,
|
229
233
|
packageName
|
@@ -17,24 +17,31 @@ const {
|
|
17
17
|
|
18
18
|
/** @typedef {import("webpack-sources").Source} Source */
|
19
19
|
/** @typedef {import("../Chunk")} Chunk */
|
20
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
21
|
+
/** @typedef {import("../Compilation")} Compilation */
|
20
22
|
/** @typedef {import("../Module")} Module */
|
21
23
|
/** @typedef {import("./ConsumeSharedModule")} ConsumeSharedModule */
|
22
24
|
|
23
25
|
class ConsumeSharedRuntimeModule extends RuntimeModule {
|
26
|
+
/**
|
27
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
28
|
+
*/
|
24
29
|
constructor(runtimeRequirements) {
|
25
30
|
super("consumes", RuntimeModule.STAGE_ATTACH);
|
26
31
|
this._runtimeRequirements = runtimeRequirements;
|
27
32
|
}
|
28
33
|
|
29
34
|
/**
|
30
|
-
* @returns {string} runtime code
|
35
|
+
* @returns {string | null} runtime code
|
31
36
|
*/
|
32
37
|
generate() {
|
33
|
-
const
|
38
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
39
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
34
40
|
const { runtimeTemplate, codeGenerationResults } = compilation;
|
35
41
|
const chunkToModuleMapping = {};
|
36
42
|
/** @type {Map<string | number, Source>} */
|
37
43
|
const moduleIdToSourceMapping = new Map();
|
44
|
+
/** @type {(string | number)[]} */
|
38
45
|
const initialConsumes = [];
|
39
46
|
/**
|
40
47
|
*
|
@@ -57,7 +64,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
57
64
|
);
|
58
65
|
}
|
59
66
|
};
|
60
|
-
for (const chunk of this.chunk.getAllAsyncChunks()) {
|
67
|
+
for (const chunk of /** @type {Chunk} */ (this.chunk).getAllAsyncChunks()) {
|
61
68
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
62
69
|
chunk,
|
63
70
|
"consume-shared"
|
@@ -65,7 +72,9 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
65
72
|
if (!modules) continue;
|
66
73
|
addModules(modules, chunk, (chunkToModuleMapping[chunk.id] = []));
|
67
74
|
}
|
68
|
-
for (const chunk of
|
75
|
+
for (const chunk of /** @type {Chunk} */ (
|
76
|
+
this.chunk
|
77
|
+
).getAllInitialChunks()) {
|
69
78
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
70
79
|
chunk,
|
71
80
|
"consume-shared"
|
@@ -119,8 +128,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
119
128
|
"scope, scopeName, key, requiredVersion",
|
120
129
|
[
|
121
130
|
"var version = findSingletonVersionKey(scope, key);",
|
122
|
-
"if (!satisfy(requiredVersion, version)) "
|
123
|
-
'typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',
|
131
|
+
"if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));",
|
124
132
|
"return get(scope[key][version]);"
|
125
133
|
]
|
126
134
|
)};`,
|
@@ -166,10 +174,17 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
166
174
|
"throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
167
175
|
]
|
168
176
|
)};`,
|
177
|
+
`var warn = ${
|
178
|
+
compilation.outputOptions.ignoreBrowserWarnings
|
179
|
+
? runtimeTemplate.basicFunction("", "")
|
180
|
+
: runtimeTemplate.basicFunction("msg", [
|
181
|
+
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
182
|
+
])
|
183
|
+
};`,
|
169
184
|
`var warnInvalidVersion = ${runtimeTemplate.basicFunction(
|
170
185
|
"scope, scopeName, key, requiredVersion",
|
171
186
|
[
|
172
|
-
|
187
|
+
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
173
188
|
]
|
174
189
|
)};`,
|
175
190
|
`var get = ${runtimeTemplate.basicFunction("entry", [
|
@@ -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");
|
@@ -23,6 +24,8 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
|
23
24
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
24
25
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
25
26
|
/** @typedef {import("../WebpackError")} WebpackError */
|
27
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
28
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
26
29
|
/** @typedef {import("../util/Hash")} Hash */
|
27
30
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
28
31
|
|
@@ -37,7 +40,7 @@ class ProvideSharedModule extends Module {
|
|
37
40
|
* @param {boolean} eager include the module in sync way
|
38
41
|
*/
|
39
42
|
constructor(shareScope, name, version, request, eager) {
|
40
|
-
super(
|
43
|
+
super(WEBPACK_MODULE_TYPE_PROVIDE);
|
41
44
|
this._shareScope = shareScope;
|
42
45
|
this._name = name;
|
43
46
|
this._version = version;
|
@@ -158,6 +161,9 @@ class ProvideSharedModule extends Module {
|
|
158
161
|
return { sources, data, runtimeRequirements };
|
159
162
|
}
|
160
163
|
|
164
|
+
/**
|
165
|
+
* @param {ObjectSerializerContext} context context
|
166
|
+
*/
|
161
167
|
serialize(context) {
|
162
168
|
const { write } = context;
|
163
169
|
write(this._shareScope);
|
@@ -168,6 +174,10 @@ class ProvideSharedModule extends Module {
|
|
168
174
|
super.serialize(context);
|
169
175
|
}
|
170
176
|
|
177
|
+
/**
|
178
|
+
* @param {ObjectDeserializerContext} context context
|
179
|
+
* @returns {ProvideSharedModule} deserialize fallback dependency
|
180
|
+
*/
|
171
181
|
static deserialize(context) {
|
172
182
|
const { read } = context;
|
173
183
|
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) {
|