webpack 5.76.1 → 5.88.2
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 +6 -1
- 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 +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- 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/DependencyTemplates.js +1 -1
- 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 +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- 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/Generator.js +7 -0
- 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/Watching.js +62 -25
- 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/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- 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 +18 -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 +217 -198
- 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 +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- 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 +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- 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 +84 -21
- package/lib/util/semver.js +2 -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 +133 -6
- 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 +1629 -683
@@ -5,6 +5,12 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
ASSET_MODULE_TYPE_RESOURCE,
|
10
|
+
ASSET_MODULE_TYPE_INLINE,
|
11
|
+
ASSET_MODULE_TYPE,
|
12
|
+
ASSET_MODULE_TYPE_SOURCE
|
13
|
+
} = require("../ModuleTypeConstants");
|
8
14
|
const { cleverMerge } = require("../util/cleverMerge");
|
9
15
|
const { compareModulesByIdentifier } = require("../util/comparators");
|
10
16
|
const createSchemaValidation = require("../util/create-schema-validation");
|
@@ -15,6 +21,10 @@ const memoize = require("../util/memoize");
|
|
15
21
|
/** @typedef {import("../Compiler")} Compiler */
|
16
22
|
/** @typedef {import("../Module")} Module */
|
17
23
|
|
24
|
+
/**
|
25
|
+
* @param {string} name name of definitions
|
26
|
+
* @returns {TODO} definition
|
27
|
+
*/
|
18
28
|
const getSchema = name => {
|
19
29
|
const { definitions } = require("../../schemas/WebpackOptions.json");
|
20
30
|
return {
|
@@ -61,7 +71,7 @@ const getAssetSourceGenerator = memoize(() =>
|
|
61
71
|
require("./AssetSourceGenerator")
|
62
72
|
);
|
63
73
|
|
64
|
-
const type =
|
74
|
+
const type = ASSET_MODULE_TYPE;
|
65
75
|
const plugin = "AssetModulesPlugin";
|
66
76
|
|
67
77
|
class AssetModulesPlugin {
|
@@ -75,7 +85,7 @@ class AssetModulesPlugin {
|
|
75
85
|
plugin,
|
76
86
|
(compilation, { normalModuleFactory }) => {
|
77
87
|
normalModuleFactory.hooks.createParser
|
78
|
-
.for(
|
88
|
+
.for(ASSET_MODULE_TYPE)
|
79
89
|
.tap(plugin, parserOptions => {
|
80
90
|
validateParserOptions(parserOptions);
|
81
91
|
parserOptions = cleverMerge(
|
@@ -96,35 +106,39 @@ class AssetModulesPlugin {
|
|
96
106
|
return new AssetParser(dataUrlCondition);
|
97
107
|
});
|
98
108
|
normalModuleFactory.hooks.createParser
|
99
|
-
.for(
|
109
|
+
.for(ASSET_MODULE_TYPE_INLINE)
|
100
110
|
.tap(plugin, parserOptions => {
|
101
111
|
const AssetParser = getAssetParser();
|
102
112
|
|
103
113
|
return new AssetParser(true);
|
104
114
|
});
|
105
115
|
normalModuleFactory.hooks.createParser
|
106
|
-
.for(
|
116
|
+
.for(ASSET_MODULE_TYPE_RESOURCE)
|
107
117
|
.tap(plugin, parserOptions => {
|
108
118
|
const AssetParser = getAssetParser();
|
109
119
|
|
110
120
|
return new AssetParser(false);
|
111
121
|
});
|
112
122
|
normalModuleFactory.hooks.createParser
|
113
|
-
.for(
|
123
|
+
.for(ASSET_MODULE_TYPE_SOURCE)
|
114
124
|
.tap(plugin, parserOptions => {
|
115
125
|
const AssetSourceParser = getAssetSourceParser();
|
116
126
|
|
117
127
|
return new AssetSourceParser();
|
118
128
|
});
|
119
129
|
|
120
|
-
for (const type of [
|
130
|
+
for (const type of [
|
131
|
+
ASSET_MODULE_TYPE,
|
132
|
+
ASSET_MODULE_TYPE_INLINE,
|
133
|
+
ASSET_MODULE_TYPE_RESOURCE
|
134
|
+
]) {
|
121
135
|
normalModuleFactory.hooks.createGenerator
|
122
136
|
.for(type)
|
123
137
|
.tap(plugin, generatorOptions => {
|
124
138
|
validateGeneratorOptions[type](generatorOptions);
|
125
139
|
|
126
140
|
let dataUrl = undefined;
|
127
|
-
if (type !==
|
141
|
+
if (type !== ASSET_MODULE_TYPE_RESOURCE) {
|
128
142
|
dataUrl = generatorOptions.dataUrl;
|
129
143
|
if (!dataUrl || typeof dataUrl === "object") {
|
130
144
|
dataUrl = {
|
@@ -138,7 +152,7 @@ class AssetModulesPlugin {
|
|
138
152
|
let filename = undefined;
|
139
153
|
let publicPath = undefined;
|
140
154
|
let outputPath = undefined;
|
141
|
-
if (type !==
|
155
|
+
if (type !== ASSET_MODULE_TYPE_INLINE) {
|
142
156
|
filename = generatorOptions.filename;
|
143
157
|
publicPath = generatorOptions.publicPath;
|
144
158
|
outputPath = generatorOptions.outputPath;
|
@@ -156,7 +170,7 @@ class AssetModulesPlugin {
|
|
156
170
|
});
|
157
171
|
}
|
158
172
|
normalModuleFactory.hooks.createGenerator
|
159
|
-
.for(
|
173
|
+
.for(ASSET_MODULE_TYPE_SOURCE)
|
160
174
|
.tap(plugin, () => {
|
161
175
|
const AssetSourceGenerator = getAssetSourceGenerator();
|
162
176
|
|
@@ -169,7 +183,7 @@ class AssetModulesPlugin {
|
|
169
183
|
|
170
184
|
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
171
185
|
chunk,
|
172
|
-
|
186
|
+
ASSET_MODULE_TYPE,
|
173
187
|
compareModulesByIdentifier
|
174
188
|
);
|
175
189
|
if (modules) {
|
@@ -194,7 +208,9 @@ class AssetModulesPlugin {
|
|
194
208
|
codeGenResult.data.get("fullContentHash")
|
195
209
|
});
|
196
210
|
} catch (e) {
|
197
|
-
|
211
|
+
/** @type {Error} */ (
|
212
|
+
e
|
213
|
+
).message += `\nduring rendering of asset ${module.identifier()}`;
|
198
214
|
throw e;
|
199
215
|
}
|
200
216
|
}
|
@@ -207,7 +223,7 @@ class AssetModulesPlugin {
|
|
207
223
|
"AssetModulesPlugin",
|
208
224
|
(options, context) => {
|
209
225
|
const { codeGenerationResult } = options;
|
210
|
-
const source = codeGenerationResult.sources.get(
|
226
|
+
const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
|
211
227
|
if (source === undefined) return;
|
212
228
|
context.assets.set(codeGenerationResult.data.get("filename"), {
|
213
229
|
source,
|
package/lib/asset/AssetParser.js
CHANGED
@@ -7,7 +7,10 @@
|
|
7
7
|
|
8
8
|
const Parser = require("../Parser");
|
9
9
|
|
10
|
+
/** @typedef {import("../../declarations/WebpackOptions").AssetParserDataUrlOptions} AssetParserDataUrlOptions */
|
10
11
|
/** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
|
12
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
13
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
11
14
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
12
15
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
13
16
|
|
@@ -29,23 +32,28 @@ class AssetParser extends Parser {
|
|
29
32
|
if (typeof source === "object" && !Buffer.isBuffer(source)) {
|
30
33
|
throw new Error("AssetParser doesn't accept preparsed AST");
|
31
34
|
}
|
32
|
-
|
33
|
-
state.module.
|
34
|
-
|
35
|
+
|
36
|
+
const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo);
|
37
|
+
buildInfo.strict = true;
|
38
|
+
const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
|
39
|
+
buildMeta.exportsType = "default";
|
40
|
+
buildMeta.defaultObject = false;
|
35
41
|
|
36
42
|
if (typeof this.dataUrlCondition === "function") {
|
37
|
-
|
43
|
+
buildInfo.dataUrl = this.dataUrlCondition(source, {
|
38
44
|
filename: state.module.matchResource || state.module.resource,
|
39
45
|
module: state.module
|
40
46
|
});
|
41
47
|
} else if (typeof this.dataUrlCondition === "boolean") {
|
42
|
-
|
48
|
+
buildInfo.dataUrl = this.dataUrlCondition;
|
43
49
|
} else if (
|
44
50
|
this.dataUrlCondition &&
|
45
51
|
typeof this.dataUrlCondition === "object"
|
46
52
|
) {
|
47
|
-
|
48
|
-
Buffer.byteLength(source) <=
|
53
|
+
buildInfo.dataUrl =
|
54
|
+
Buffer.byteLength(source) <=
|
55
|
+
/** @type {NonNullable<AssetParserDataUrlOptions["maxSize"]>} */
|
56
|
+
(this.dataUrlCondition.maxSize);
|
49
57
|
} else {
|
50
58
|
throw new Error("Unexpected dataUrlCondition type");
|
51
59
|
}
|
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
const Parser = require("../Parser");
|
9
9
|
|
10
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
11
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
10
12
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
11
13
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
12
14
|
|
@@ -21,9 +23,12 @@ class AssetSourceParser extends Parser {
|
|
21
23
|
throw new Error("AssetSourceParser doesn't accept preparsed AST");
|
22
24
|
}
|
23
25
|
const { module } = state;
|
24
|
-
|
25
|
-
module.
|
26
|
-
|
26
|
+
/** @type {BuildInfo} */
|
27
|
+
(module.buildInfo).strict = true;
|
28
|
+
/** @type {BuildMeta} */
|
29
|
+
(module.buildMeta).exportsType = "default";
|
30
|
+
/** @type {BuildMeta} */
|
31
|
+
(state.module.buildMeta).defaultObject = false;
|
27
32
|
|
28
33
|
return state;
|
29
34
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
9
9
|
const Module = require("../Module");
|
10
|
+
const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
|
10
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
11
12
|
const makeSerializable = require("../util/makeSerializable");
|
12
13
|
|
@@ -19,6 +20,8 @@ const makeSerializable = require("../util/makeSerializable");
|
|
19
20
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
20
21
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
21
22
|
/** @typedef {import("../WebpackError")} WebpackError */
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
24
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
22
25
|
/** @typedef {import("../util/Hash")} Hash */
|
23
26
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
24
27
|
|
@@ -31,7 +34,7 @@ class RawDataUrlModule extends Module {
|
|
31
34
|
* @param {string=} readableIdentifier readable identifier
|
32
35
|
*/
|
33
36
|
constructor(url, identifier, readableIdentifier) {
|
34
|
-
super(
|
37
|
+
super(ASSET_MODULE_TYPE_RAW_DATA_URL, null);
|
35
38
|
this.url = url;
|
36
39
|
this.urlBuffer = url ? Buffer.from(url) : undefined;
|
37
40
|
this.identifierStr = identifier || this.url;
|
@@ -57,7 +60,8 @@ class RawDataUrlModule extends Module {
|
|
57
60
|
* @returns {number} the estimated size of the module (must be non-zero)
|
58
61
|
*/
|
59
62
|
size(type) {
|
60
|
-
if (this.url === undefined)
|
63
|
+
if (this.url === undefined)
|
64
|
+
this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
|
61
65
|
return Math.max(1, this.url.length);
|
62
66
|
}
|
63
67
|
|
@@ -99,7 +103,8 @@ class RawDataUrlModule extends Module {
|
|
99
103
|
* @returns {CodeGenerationResult} result
|
100
104
|
*/
|
101
105
|
codeGeneration(context) {
|
102
|
-
if (this.url === undefined)
|
106
|
+
if (this.url === undefined)
|
107
|
+
this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
|
103
108
|
const sources = new Map();
|
104
109
|
sources.set(
|
105
110
|
"javascript",
|
@@ -118,10 +123,13 @@ class RawDataUrlModule extends Module {
|
|
118
123
|
* @returns {void}
|
119
124
|
*/
|
120
125
|
updateHash(hash, context) {
|
121
|
-
hash.update(this.urlBuffer);
|
126
|
+
hash.update(/** @type {Buffer} */ (this.urlBuffer));
|
122
127
|
super.updateHash(hash, context);
|
123
128
|
}
|
124
129
|
|
130
|
+
/**
|
131
|
+
* @param {ObjectSerializerContext} context context
|
132
|
+
*/
|
125
133
|
serialize(context) {
|
126
134
|
const { write } = context;
|
127
135
|
|
@@ -132,6 +140,9 @@ class RawDataUrlModule extends Module {
|
|
132
140
|
super.serialize(context);
|
133
141
|
}
|
134
142
|
|
143
|
+
/**
|
144
|
+
* @param {ObjectDeserializerContext} context context
|
145
|
+
*/
|
135
146
|
deserialize(context) {
|
136
147
|
const { read } = context;
|
137
148
|
|
@@ -29,6 +29,10 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
29
29
|
this.promises = promises;
|
30
30
|
}
|
31
31
|
|
32
|
+
/**
|
33
|
+
* @param {AwaitDependenciesInitFragment} other other AwaitDependenciesInitFragment
|
34
|
+
* @returns {AwaitDependenciesInitFragment} AwaitDependenciesInitFragment
|
35
|
+
*/
|
32
36
|
merge(other) {
|
33
37
|
const promises = new Set(other.promises);
|
34
38
|
for (const p of this.promises) {
|
package/lib/buildChunkGraph.js
CHANGED
@@ -16,6 +16,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
16
16
|
/** @typedef {import("./Compilation")} Compilation */
|
17
17
|
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
18
18
|
/** @typedef {import("./Dependency")} Dependency */
|
19
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
19
20
|
/** @typedef {import("./Entrypoint")} Entrypoint */
|
20
21
|
/** @typedef {import("./Module")} Module */
|
21
22
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
@@ -39,15 +40,15 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
39
40
|
* @typedef {Object} ChunkGroupInfo
|
40
41
|
* @property {ChunkGroup} chunkGroup the chunk group
|
41
42
|
* @property {RuntimeSpec} runtime the runtimes
|
42
|
-
* @property {ModuleSetPlus} minAvailableModules current minimal set of modules available at this point
|
43
|
-
* @property {boolean} minAvailableModulesOwned true, if minAvailableModules is owned and can be modified
|
43
|
+
* @property {ModuleSetPlus | undefined} minAvailableModules current minimal set of modules available at this point
|
44
|
+
* @property {boolean | undefined} minAvailableModulesOwned true, if minAvailableModules is owned and can be modified
|
44
45
|
* @property {ModuleSetPlus[]} availableModulesToBeMerged enqueued updates to the minimal set of available modules
|
45
46
|
* @property {Set<Module>=} skippedItems modules that were skipped because module is already available in parent chunks (need to reconsider when minAvailableModules is shrinking)
|
46
47
|
* @property {Set<[Module, ConnectionState]>=} skippedModuleConnections referenced modules that where skipped because they were not active in this runtime
|
47
|
-
* @property {ModuleSetPlus} resultingAvailableModules set of modules available including modules from this chunk group
|
48
|
-
* @property {Set<ChunkGroupInfo>} children set of children chunk groups, that will be revisited when availableModules shrink
|
49
|
-
* @property {Set<ChunkGroupInfo>} availableSources set of chunk groups that are the source for minAvailableModules
|
50
|
-
* @property {Set<ChunkGroupInfo>} availableChildren set of chunk groups which depend on the this chunk group as availableSource
|
48
|
+
* @property {ModuleSetPlus | undefined} resultingAvailableModules set of modules available including modules from this chunk group
|
49
|
+
* @property {Set<ChunkGroupInfo> | undefined} children set of children chunk groups, that will be revisited when availableModules shrink
|
50
|
+
* @property {Set<ChunkGroupInfo> | undefined} availableSources set of chunk groups that are the source for minAvailableModules
|
51
|
+
* @property {Set<ChunkGroupInfo> | undefined} availableChildren set of chunk groups which depend on the this chunk group as availableSource
|
51
52
|
* @property {number} preOrderIndex next pre order index
|
52
53
|
* @property {number} postOrderIndex next post order index
|
53
54
|
* @property {boolean} chunkLoading has a chunk loading mechanism
|
@@ -199,6 +200,7 @@ const visitModules = (
|
|
199
200
|
|
200
201
|
/** @type {RuntimeSpec | false} */
|
201
202
|
let blockModulesMapRuntime = false;
|
203
|
+
/** @type {Map<DependenciesBlock, (Module | ConnectionState)[]>} */
|
202
204
|
let blockModulesMap;
|
203
205
|
|
204
206
|
/**
|
@@ -239,7 +241,7 @@ const visitModules = (
|
|
239
241
|
extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
|
240
242
|
blockModules = blockModulesMap.get(block);
|
241
243
|
logger.timeAggregate("visitModules: prepare");
|
242
|
-
return blockModules;
|
244
|
+
return /** @type {(Module | ConnectionState)[]} */ (blockModules);
|
243
245
|
}
|
244
246
|
};
|
245
247
|
|
@@ -290,7 +292,7 @@ const visitModules = (
|
|
290
292
|
for (const [chunkGroup, modules] of inputEntrypointsAndModules) {
|
291
293
|
const runtime = getEntryRuntime(
|
292
294
|
compilation,
|
293
|
-
chunkGroup.name,
|
295
|
+
/** @type {string} */ (chunkGroup.name),
|
294
296
|
chunkGroup.options
|
295
297
|
);
|
296
298
|
/** @type {ChunkGroupInfo} */
|
@@ -352,7 +354,9 @@ const visitModules = (
|
|
352
354
|
const { chunkGroup } = chunkGroupInfo;
|
353
355
|
chunkGroupInfo.availableSources = new Set();
|
354
356
|
for (const parent of chunkGroup.parentsIterable) {
|
355
|
-
const parentChunkGroupInfo =
|
357
|
+
const parentChunkGroupInfo =
|
358
|
+
/** @type {ChunkGroupInfo} */
|
359
|
+
(chunkGroupInfoMap.get(parent));
|
356
360
|
chunkGroupInfo.availableSources.add(parentChunkGroupInfo);
|
357
361
|
if (parentChunkGroupInfo.availableChildren === undefined) {
|
358
362
|
parentChunkGroupInfo.availableChildren = new Set();
|
@@ -399,15 +403,15 @@ const visitModules = (
|
|
399
403
|
// 1. We create a chunk group with single chunk in it for this Block
|
400
404
|
// but only once (blockChunkGroups map)
|
401
405
|
let cgi = blockChunkGroups.get(b);
|
402
|
-
/** @type {ChunkGroup} */
|
406
|
+
/** @type {ChunkGroup | undefined} */
|
403
407
|
let c;
|
404
|
-
/** @type {Entrypoint} */
|
408
|
+
/** @type {Entrypoint | undefined} */
|
405
409
|
let entrypoint;
|
406
410
|
const entryOptions = b.groupOptions && b.groupOptions.entryOptions;
|
407
411
|
if (cgi === undefined) {
|
408
412
|
const chunkName = (b.groupOptions && b.groupOptions.name) || b.chunkName;
|
409
413
|
if (entryOptions) {
|
410
|
-
cgi = namedAsyncEntrypoints.get(chunkName);
|
414
|
+
cgi = namedAsyncEntrypoints.get(/** @type {string} */ (chunkName));
|
411
415
|
if (!cgi) {
|
412
416
|
entrypoint = compilation.addAsyncEntrypoint(
|
413
417
|
entryOptions,
|
@@ -505,7 +509,11 @@ const visitModules = (
|
|
505
509
|
c = cgi.chunkGroup;
|
506
510
|
if (c.isInitial()) {
|
507
511
|
compilation.errors.push(
|
508
|
-
new AsyncDependencyToInitialChunkError(
|
512
|
+
new AsyncDependencyToInitialChunkError(
|
513
|
+
/** @type {string} */ (chunkName),
|
514
|
+
module,
|
515
|
+
b.loc
|
516
|
+
)
|
509
517
|
);
|
510
518
|
c = chunkGroup;
|
511
519
|
} else {
|
@@ -515,7 +523,7 @@ const visitModules = (
|
|
515
523
|
}
|
516
524
|
blockConnections.set(b, []);
|
517
525
|
}
|
518
|
-
blockChunkGroups.set(b, cgi);
|
526
|
+
blockChunkGroups.set(b, /** @type {ChunkGroupInfo} */ (cgi));
|
519
527
|
} else if (entryOptions) {
|
520
528
|
entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
|
521
529
|
} else {
|
@@ -536,7 +544,7 @@ const visitModules = (
|
|
536
544
|
connectList = new Set();
|
537
545
|
queueConnect.set(chunkGroupInfo, connectList);
|
538
546
|
}
|
539
|
-
connectList.add(cgi);
|
547
|
+
connectList.add(/** @type {ChunkGroupInfo} */ (cgi));
|
540
548
|
|
541
549
|
// TODO check if this really need to be done for each traversal
|
542
550
|
// or if it is enough when it's queued when created
|
@@ -547,7 +555,7 @@ const visitModules = (
|
|
547
555
|
module: module,
|
548
556
|
chunk: c.chunks[0],
|
549
557
|
chunkGroup: c,
|
550
|
-
chunkGroupInfo: cgi
|
558
|
+
chunkGroupInfo: /** @type {ChunkGroupInfo} */ (cgi)
|
551
559
|
});
|
552
560
|
} else if (entrypoint !== undefined) {
|
553
561
|
chunkGroupInfo.chunkGroup.addAsyncEntrypoint(entrypoint);
|
@@ -690,7 +698,7 @@ const visitModules = (
|
|
690
698
|
const processQueue = () => {
|
691
699
|
while (queue.length) {
|
692
700
|
statProcessedQueueItems++;
|
693
|
-
const queueItem = queue.pop();
|
701
|
+
const queueItem = /** @type {QueueItem} */ (queue.pop());
|
694
702
|
module = queueItem.module;
|
695
703
|
block = queueItem.block;
|
696
704
|
chunk = queueItem.chunk;
|
@@ -1087,7 +1095,9 @@ const visitModules = (
|
|
1087
1095
|
|
1088
1096
|
const processChunkGroupsForCombining = () => {
|
1089
1097
|
for (const info of chunkGroupsForCombining) {
|
1090
|
-
for (const source of
|
1098
|
+
for (const source of /** @type {Set<ChunkGroupInfo>} */ (
|
1099
|
+
info.availableSources
|
1100
|
+
)) {
|
1091
1101
|
if (!source.minAvailableModules) {
|
1092
1102
|
chunkGroupsForCombining.delete(info);
|
1093
1103
|
break;
|
@@ -1106,7 +1116,9 @@ const visitModules = (
|
|
1106
1116
|
}
|
1107
1117
|
};
|
1108
1118
|
// combine minAvailableModules from all resultingAvailableModules
|
1109
|
-
for (const source of
|
1119
|
+
for (const source of /** @type {Set<ChunkGroupInfo>} */ (
|
1120
|
+
info.availableSources
|
1121
|
+
)) {
|
1110
1122
|
const resultingAvailableModules =
|
1111
1123
|
calculateResultingAvailableModules(source);
|
1112
1124
|
mergeSet(resultingAvailableModules);
|
@@ -1126,7 +1138,9 @@ const visitModules = (
|
|
1126
1138
|
for (const info of outdatedChunkGroupInfo) {
|
1127
1139
|
// 1. Reconsider skipped items
|
1128
1140
|
if (info.skippedItems !== undefined) {
|
1129
|
-
const
|
1141
|
+
const minAvailableModules =
|
1142
|
+
/** @type {ModuleSetPlus} */
|
1143
|
+
(info.minAvailableModules);
|
1130
1144
|
for (const module of info.skippedItems) {
|
1131
1145
|
if (
|
1132
1146
|
!minAvailableModules.has(module) &&
|
@@ -1147,7 +1161,9 @@ const visitModules = (
|
|
1147
1161
|
|
1148
1162
|
// 2. Reconsider skipped connections
|
1149
1163
|
if (info.skippedModuleConnections !== undefined) {
|
1150
|
-
const
|
1164
|
+
const minAvailableModules =
|
1165
|
+
/** @type {ModuleSetPlus} */
|
1166
|
+
(info.minAvailableModules);
|
1151
1167
|
for (const entry of info.skippedModuleConnections) {
|
1152
1168
|
const [module, activeState] = entry;
|
1153
1169
|
if (activeState === false) continue;
|
@@ -50,7 +50,7 @@ class IdleFileCachePlugin {
|
|
50
50
|
let timeSpendInStore = 0;
|
51
51
|
let avgTimeSpendInStore = 0;
|
52
52
|
|
53
|
-
/** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise
|
53
|
+
/** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void>>} */
|
54
54
|
const pendingIdleTasks = new Map();
|
55
55
|
|
56
56
|
compiler.cache.hooks.store.tap(
|
@@ -171,6 +171,7 @@ class IdleFileCachePlugin {
|
|
171
171
|
isInitialStore = false;
|
172
172
|
}
|
173
173
|
};
|
174
|
+
/** @type {ReturnType<typeof setTimeout> | undefined} */
|
174
175
|
let idleTimer = undefined;
|
175
176
|
compiler.cache.hooks.beginIdle.tap(
|
176
177
|
{ name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
|
@@ -34,6 +34,8 @@ class MemoryWithGcCachePlugin {
|
|
34
34
|
generation++;
|
35
35
|
let clearedEntries = 0;
|
36
36
|
let lastClearedIdentifier;
|
37
|
+
// Avoid coverage problems due indirect changes
|
38
|
+
/* istanbul ignore next */
|
37
39
|
for (const [identifier, entry] of oldCache) {
|
38
40
|
if (entry.until > generation) break;
|
39
41
|
|