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
@@ -15,13 +15,15 @@ const makeSerializable = require("./util/makeSerializable");
|
|
15
15
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
16
16
|
/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
|
17
17
|
/** @typedef {import("./Module")} Module */
|
18
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
19
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
18
20
|
/** @typedef {import("./util/Hash")} Hash */
|
19
21
|
|
20
22
|
class AsyncDependenciesBlock extends DependenciesBlock {
|
21
23
|
/**
|
22
|
-
* @param {ChunkGroupOptions & { entryOptions?: EntryOptions }} groupOptions options for the group
|
23
|
-
* @param {DependencyLocation=} loc the line of code
|
24
|
-
* @param {string=} request the request
|
24
|
+
* @param {(ChunkGroupOptions & { entryOptions?: EntryOptions }) | null} groupOptions options for the group
|
25
|
+
* @param {(DependencyLocation | null)=} loc the line of code
|
26
|
+
* @param {(string | null)=} request the request
|
25
27
|
*/
|
26
28
|
constructor(groupOptions, loc, request) {
|
27
29
|
super();
|
@@ -37,14 +39,14 @@ class AsyncDependenciesBlock extends DependenciesBlock {
|
|
37
39
|
}
|
38
40
|
|
39
41
|
/**
|
40
|
-
* @returns {string} The name of the chunk
|
42
|
+
* @returns {string | undefined} The name of the chunk
|
41
43
|
*/
|
42
44
|
get chunkName() {
|
43
45
|
return this.groupOptions.name;
|
44
46
|
}
|
45
47
|
|
46
48
|
/**
|
47
|
-
* @param {string} value The new chunk name
|
49
|
+
* @param {string | undefined} value The new chunk name
|
48
50
|
* @returns {void}
|
49
51
|
*/
|
50
52
|
set chunkName(value) {
|
@@ -71,6 +73,9 @@ class AsyncDependenciesBlock extends DependenciesBlock {
|
|
71
73
|
super.updateHash(hash, context);
|
72
74
|
}
|
73
75
|
|
76
|
+
/**
|
77
|
+
* @param {ObjectSerializerContext} context context
|
78
|
+
*/
|
74
79
|
serialize(context) {
|
75
80
|
const { write } = context;
|
76
81
|
write(this.groupOptions);
|
@@ -79,6 +84,9 @@ class AsyncDependenciesBlock extends DependenciesBlock {
|
|
79
84
|
super.serialize(context);
|
80
85
|
}
|
81
86
|
|
87
|
+
/**
|
88
|
+
* @param {ObjectDeserializerContext} context context
|
89
|
+
*/
|
82
90
|
deserialize(context) {
|
83
91
|
const { read } = context;
|
84
92
|
this.groupOptions = read();
|
package/lib/BannerPlugin.js
CHANGED
@@ -11,6 +11,7 @@ const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
|
11
11
|
const Template = require("./Template");
|
12
12
|
const createSchemaValidation = require("./util/create-schema-validation");
|
13
13
|
|
14
|
+
/** @typedef {import("../declarations/plugins/BannerPlugin").BannerFunction} BannerFunction */
|
14
15
|
/** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginArgument} BannerPluginArgument */
|
15
16
|
/** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginOptions} BannerPluginOptions */
|
16
17
|
/** @typedef {import("./Compiler")} Compiler */
|
@@ -24,6 +25,10 @@ const validate = createSchemaValidation(
|
|
24
25
|
}
|
25
26
|
);
|
26
27
|
|
28
|
+
/**
|
29
|
+
* @param {string} str string to wrap
|
30
|
+
* @returns {string} wrapped string
|
31
|
+
*/
|
27
32
|
const wrapComment = str => {
|
28
33
|
if (!str.includes("\n")) {
|
29
34
|
return Template.toComment(str);
|
@@ -56,7 +61,7 @@ class BannerPlugin {
|
|
56
61
|
const getBanner = bannerOption;
|
57
62
|
this.banner = this.options.raw
|
58
63
|
? getBanner
|
59
|
-
: data => wrapComment(getBanner(data));
|
64
|
+
: /** @type {BannerFunction} */ data => wrapComment(getBanner(data));
|
60
65
|
} else {
|
61
66
|
const banner = this.options.raw
|
62
67
|
? bannerOption
|
package/lib/CacheFacade.js
CHANGED
@@ -55,6 +55,10 @@ class MultiItemCache {
|
|
55
55
|
* @returns {Promise<T>} promise with the data
|
56
56
|
*/
|
57
57
|
getPromise() {
|
58
|
+
/**
|
59
|
+
* @param {number} i index
|
60
|
+
* @returns {Promise<T>} promise with the data
|
61
|
+
*/
|
58
62
|
const next = i => {
|
59
63
|
return this._items[i].getPromise().then(result => {
|
60
64
|
if (result !== undefined) return result;
|
@@ -42,7 +42,9 @@ const createModulesListMessage = (modules, moduleGraph) => {
|
|
42
42
|
|
43
43
|
if (validReasons.length > 0) {
|
44
44
|
message += `\n Used by ${validReasons.length} module(s), i. e.`;
|
45
|
-
message += `\n ${
|
45
|
+
message += `\n ${
|
46
|
+
/** @type {Module[]} */ (validReasons)[0].identifier()
|
47
|
+
}`;
|
46
48
|
}
|
47
49
|
return message;
|
48
50
|
})
|
package/lib/Chunk.js
CHANGED
@@ -23,6 +23,7 @@ const { mergeRuntime } = require("./util/runtime");
|
|
23
23
|
/** @typedef {import("./ChunkGraph").ChunkSizeOptions} ChunkSizeOptions */
|
24
24
|
/** @typedef {import("./ChunkGraph").ModuleFilterPredicate} ModuleFilterPredicate */
|
25
25
|
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
26
|
+
/** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
|
26
27
|
/** @typedef {import("./Compilation")} Compilation */
|
27
28
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
28
29
|
/** @typedef {import("./Compilation").PathData} PathData */
|
@@ -32,6 +33,8 @@ const { mergeRuntime } = require("./util/runtime");
|
|
32
33
|
/** @typedef {import("./util/Hash")} Hash */
|
33
34
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
34
35
|
|
36
|
+
/** @typedef {number | string} ChunkId */
|
37
|
+
|
35
38
|
const ChunkFilesSet = createArrayToSetDeprecationSet("chunk.files");
|
36
39
|
|
37
40
|
/**
|
@@ -66,21 +69,21 @@ class Chunk {
|
|
66
69
|
* @param {boolean} backCompat enable backward-compatibility
|
67
70
|
*/
|
68
71
|
constructor(name, backCompat = true) {
|
69
|
-
/** @type {
|
72
|
+
/** @type {ChunkId | null} */
|
70
73
|
this.id = null;
|
71
|
-
/** @type {
|
74
|
+
/** @type {ChunkId[] | null} */
|
72
75
|
this.ids = null;
|
73
76
|
/** @type {number} */
|
74
77
|
this.debugId = debugId++;
|
75
|
-
/** @type {string} */
|
78
|
+
/** @type {string | undefined} */
|
76
79
|
this.name = name;
|
77
80
|
/** @type {SortableSet<string>} */
|
78
81
|
this.idNameHints = new SortableSet();
|
79
82
|
/** @type {boolean} */
|
80
83
|
this.preventIntegration = false;
|
81
|
-
/** @type {(string | function(PathData, AssetInfo=): string)
|
84
|
+
/** @type {(string | function(PathData, AssetInfo=): string) | undefined} */
|
82
85
|
this.filenameTemplate = undefined;
|
83
|
-
/** @type {(string | function(PathData, AssetInfo=): string)
|
86
|
+
/** @type {(string | function(PathData, AssetInfo=): string) | undefined} */
|
84
87
|
this.cssFilenameTemplate = undefined;
|
85
88
|
/** @private @type {SortableSet<ChunkGroup>} */
|
86
89
|
this._groups = new SortableSet(undefined, compareChunkGroupsByIndex);
|
@@ -350,7 +353,7 @@ class Chunk {
|
|
350
353
|
const chunkModuleHashMap = Object.create(null);
|
351
354
|
|
352
355
|
for (const asyncChunk of this.getAllAsyncChunks()) {
|
353
|
-
/** @type {
|
356
|
+
/** @type {ChunkId[] | undefined} */
|
354
357
|
let array;
|
355
358
|
for (const module of chunkGraph.getOrderedChunkModulesIterable(
|
356
359
|
asyncChunk,
|
@@ -359,7 +362,7 @@ class Chunk {
|
|
359
362
|
if (filterFn(module)) {
|
360
363
|
if (array === undefined) {
|
361
364
|
array = [];
|
362
|
-
chunkModuleIdMap[asyncChunk.id] = array;
|
365
|
+
chunkModuleIdMap[/** @type {ChunkId} */ (asyncChunk.id)] = array;
|
363
366
|
}
|
364
367
|
const moduleId = chunkGraph.getModuleId(module);
|
365
368
|
array.push(moduleId);
|
@@ -405,15 +408,18 @@ class Chunk {
|
|
405
408
|
const chunkNameMap = Object.create(null);
|
406
409
|
|
407
410
|
for (const chunk of this.getAllAsyncChunks()) {
|
408
|
-
|
411
|
+
const id = /** @type {ChunkId} */ (chunk.id);
|
412
|
+
chunkHashMap[id] =
|
413
|
+
/** @type {string} */
|
414
|
+
(realHash ? chunk.hash : chunk.renderedHash);
|
409
415
|
for (const key of Object.keys(chunk.contentHash)) {
|
410
416
|
if (!chunkContentHashMap[key]) {
|
411
417
|
chunkContentHashMap[key] = Object.create(null);
|
412
418
|
}
|
413
|
-
chunkContentHashMap[key][
|
419
|
+
chunkContentHashMap[key][id] = chunk.contentHash[key];
|
414
420
|
}
|
415
421
|
if (chunk.name) {
|
416
|
-
chunkNameMap[
|
422
|
+
chunkNameMap[id] = chunk.name;
|
417
423
|
}
|
418
424
|
}
|
419
425
|
|
@@ -505,7 +511,7 @@ class Chunk {
|
|
505
511
|
}
|
506
512
|
|
507
513
|
/**
|
508
|
-
* @returns {
|
514
|
+
* @returns {SortableSet<ChunkGroup>} the chunkGroups that the said chunk is referenced in
|
509
515
|
*/
|
510
516
|
get groupsIterable() {
|
511
517
|
this._groups.sort();
|
@@ -553,7 +559,11 @@ class Chunk {
|
|
553
559
|
const entryModules =
|
554
560
|
chunkGraph.getChunkEntryModulesWithChunkGroupIterable(this);
|
555
561
|
for (const [m, chunkGroup] of entryModules) {
|
556
|
-
hash.update(
|
562
|
+
hash.update(
|
563
|
+
`entry${chunkGraph.getModuleId(m)}${
|
564
|
+
/** @type {ChunkGroup} */ (chunkGroup).id
|
565
|
+
}`
|
566
|
+
);
|
557
567
|
}
|
558
568
|
}
|
559
569
|
|
@@ -697,7 +707,13 @@ class Chunk {
|
|
697
707
|
lists.set(name, list);
|
698
708
|
}
|
699
709
|
list.push({
|
700
|
-
order:
|
710
|
+
order:
|
711
|
+
/** @type {number} */
|
712
|
+
(
|
713
|
+
childGroup.options[
|
714
|
+
/** @type {keyof ChunkGroupOptions} */ (key)
|
715
|
+
]
|
716
|
+
),
|
701
717
|
group: childGroup
|
702
718
|
});
|
703
719
|
}
|
@@ -718,7 +734,7 @@ class Chunk {
|
|
718
734
|
for (const item of list) {
|
719
735
|
for (const chunk of item.group.chunks) {
|
720
736
|
if (filterFn && !filterFn(chunk, chunkGraph)) continue;
|
721
|
-
chunkIdSet.add(chunk.id);
|
737
|
+
chunkIdSet.add(/** @type {ChunkId} */ (chunk.id));
|
722
738
|
}
|
723
739
|
}
|
724
740
|
if (chunkIdSet.size > 0) {
|
@@ -731,13 +747,14 @@ class Chunk {
|
|
731
747
|
/**
|
732
748
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
733
749
|
* @param {string} type option name
|
734
|
-
* @returns {{ onChunks: Chunk[], chunks: Set<Chunk> }[]} referenced chunks for a specific type
|
750
|
+
* @returns {{ onChunks: Chunk[], chunks: Set<Chunk> }[] | undefined} referenced chunks for a specific type
|
735
751
|
*/
|
736
752
|
getChildrenOfTypeInOrder(chunkGraph, type) {
|
737
753
|
const list = [];
|
738
754
|
for (const group of this.groupsIterable) {
|
739
755
|
for (const childGroup of group.childrenIterable) {
|
740
|
-
const order =
|
756
|
+
const order =
|
757
|
+
childGroup.options[/** @type {keyof ChunkGroupOptions} */ (type)];
|
741
758
|
if (order === undefined) continue;
|
742
759
|
list.push({
|
743
760
|
order,
|
@@ -748,7 +765,8 @@ class Chunk {
|
|
748
765
|
}
|
749
766
|
if (list.length === 0) return undefined;
|
750
767
|
list.sort((a, b) => {
|
751
|
-
const cmp =
|
768
|
+
const cmp =
|
769
|
+
/** @type {number} */ (b.order) - /** @type {number} */ (a.order);
|
752
770
|
if (cmp !== 0) return cmp;
|
753
771
|
return a.group.compareTo(chunkGraph, b.group);
|
754
772
|
});
|
@@ -792,7 +810,7 @@ class Chunk {
|
|
792
810
|
if (chunkMap === undefined) {
|
793
811
|
chunkMaps[key] = chunkMap = Object.create(null);
|
794
812
|
}
|
795
|
-
chunkMap[chunk.id] = data[key];
|
813
|
+
chunkMap[/** @type {ChunkId} */ (chunk.id)] = data[key];
|
796
814
|
}
|
797
815
|
};
|
798
816
|
|
package/lib/ChunkGraph.js
CHANGED
@@ -188,7 +188,7 @@ class ChunkGraphModule {
|
|
188
188
|
this.entryInChunks = undefined;
|
189
189
|
/** @type {Set<Chunk> | undefined} */
|
190
190
|
this.runtimeInChunks = undefined;
|
191
|
-
/** @type {RuntimeSpecMap<ModuleHashInfo>} */
|
191
|
+
/** @type {RuntimeSpecMap<ModuleHashInfo> | undefined} */
|
192
192
|
this.hashes = undefined;
|
193
193
|
/** @type {string | number} */
|
194
194
|
this.id = null;
|
@@ -1388,7 +1388,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
1388
1388
|
*/
|
1389
1389
|
hasModuleHashes(module, runtime) {
|
1390
1390
|
const cgm = this._getChunkGraphModule(module);
|
1391
|
-
const hashes = cgm.hashes;
|
1391
|
+
const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
|
1392
1392
|
return hashes && hashes.has(runtime);
|
1393
1393
|
}
|
1394
1394
|
|
@@ -1399,7 +1399,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
1399
1399
|
*/
|
1400
1400
|
getModuleHash(module, runtime) {
|
1401
1401
|
const cgm = this._getChunkGraphModule(module);
|
1402
|
-
const hashes = cgm.hashes;
|
1402
|
+
const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
|
1403
1403
|
return this._getModuleHashInfo(module, hashes, runtime).hash;
|
1404
1404
|
}
|
1405
1405
|
|
@@ -1410,7 +1410,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
1410
1410
|
*/
|
1411
1411
|
getRenderedModuleHash(module, runtime) {
|
1412
1412
|
const cgm = this._getChunkGraphModule(module);
|
1413
|
-
const hashes = cgm.hashes;
|
1413
|
+
const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
|
1414
1414
|
return this._getModuleHashInfo(module, hashes, runtime).renderedHash;
|
1415
1415
|
}
|
1416
1416
|
|
package/lib/ChunkGroup.js
CHANGED
@@ -28,6 +28,7 @@ const {
|
|
28
28
|
* @typedef {Object} RawChunkGroupOptions
|
29
29
|
* @property {number=} preloadOrder
|
30
30
|
* @property {number=} prefetchOrder
|
31
|
+
* @property {("low" | "high" | "auto")=} fetchPriority
|
31
32
|
*/
|
32
33
|
|
33
34
|
/** @typedef {RawChunkGroupOptions & { name?: string }} ChunkGroupOptions */
|
@@ -97,7 +98,7 @@ class ChunkGroup {
|
|
97
98
|
/** Indices in bottom-up order */
|
98
99
|
/** @private @type {Map<Module, number>} */
|
99
100
|
this._modulePostOrderIndices = new Map();
|
100
|
-
/** @type {number} */
|
101
|
+
/** @type {number | undefined} */
|
101
102
|
this.index = undefined;
|
102
103
|
}
|
103
104
|
|
@@ -108,9 +109,15 @@ class ChunkGroup {
|
|
108
109
|
*/
|
109
110
|
addOptions(options) {
|
110
111
|
for (const key of Object.keys(options)) {
|
111
|
-
if (
|
112
|
-
this.options[key]
|
113
|
-
|
112
|
+
if (
|
113
|
+
this.options[/** @type {keyof ChunkGroupOptions} */ (key)] === undefined
|
114
|
+
) {
|
115
|
+
this.options[key] =
|
116
|
+
options[/** @type {keyof ChunkGroupOptions} */ (key)];
|
117
|
+
} else if (
|
118
|
+
this.options[/** @type {keyof ChunkGroupOptions} */ (key)] !==
|
119
|
+
options[/** @type {keyof ChunkGroupOptions} */ (key)]
|
120
|
+
) {
|
114
121
|
if (key.endsWith("Order")) {
|
115
122
|
this.options[key] = Math.max(this.options[key], options[key]);
|
116
123
|
} else {
|
@@ -124,7 +131,7 @@ class ChunkGroup {
|
|
124
131
|
|
125
132
|
/**
|
126
133
|
* returns the name of current ChunkGroup
|
127
|
-
* @returns {string|undefined} returns the ChunkGroup name
|
134
|
+
* @returns {string | undefined} returns the ChunkGroup name
|
128
135
|
*/
|
129
136
|
get name() {
|
130
137
|
return this.options.name;
|
@@ -132,7 +139,7 @@ class ChunkGroup {
|
|
132
139
|
|
133
140
|
/**
|
134
141
|
* sets a new name for current ChunkGroup
|
135
|
-
* @param {string} value the new name for ChunkGroup
|
142
|
+
* @param {string | undefined} value the new name for ChunkGroup
|
136
143
|
* @returns {void}
|
137
144
|
*/
|
138
145
|
set name(value) {
|
@@ -353,7 +360,7 @@ class ChunkGroup {
|
|
353
360
|
}
|
354
361
|
|
355
362
|
/**
|
356
|
-
* @returns {Array} an array containing the blocks
|
363
|
+
* @returns {Array<AsyncDependenciesBlock>} an array containing the blocks
|
357
364
|
*/
|
358
365
|
getBlocks() {
|
359
366
|
return this._blocks.getFromCache(getArray);
|
@@ -363,6 +370,10 @@ class ChunkGroup {
|
|
363
370
|
return this._blocks.size;
|
364
371
|
}
|
365
372
|
|
373
|
+
/**
|
374
|
+
* @param {AsyncDependenciesBlock} block block
|
375
|
+
* @returns {boolean} true, if block exists
|
376
|
+
*/
|
366
377
|
hasBlock(block) {
|
367
378
|
return this._blocks.has(block);
|
368
379
|
}
|
@@ -492,7 +503,11 @@ class ChunkGroup {
|
|
492
503
|
lists.set(name, (list = []));
|
493
504
|
}
|
494
505
|
list.push({
|
495
|
-
order:
|
506
|
+
order:
|
507
|
+
/** @type {number} */
|
508
|
+
(
|
509
|
+
childGroup.options[/** @type {keyof ChunkGroupOptions} */ (key)]
|
510
|
+
),
|
496
511
|
group: childGroup
|
497
512
|
});
|
498
513
|
}
|
@@ -524,7 +539,7 @@ class ChunkGroup {
|
|
524
539
|
/**
|
525
540
|
* Gets the top-down index of a module in this ChunkGroup
|
526
541
|
* @param {Module} module the module
|
527
|
-
* @returns {number} index
|
542
|
+
* @returns {number | undefined} index
|
528
543
|
*/
|
529
544
|
getModulePreOrderIndex(module) {
|
530
545
|
return this._modulePreOrderIndices.get(module);
|
@@ -543,7 +558,7 @@ class ChunkGroup {
|
|
543
558
|
/**
|
544
559
|
* Gets the bottom-up index of a module in this ChunkGroup
|
545
560
|
* @param {Module} module the module
|
546
|
-
* @returns {number} index
|
561
|
+
* @returns {number | undefined} index
|
547
562
|
*/
|
548
563
|
getModulePostOrderIndex(module) {
|
549
564
|
return this._modulePostOrderIndices.get(module);
|
package/lib/CleanPlugin.js
CHANGED
@@ -78,7 +78,8 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
|
|
78
78
|
directories,
|
79
79
|
10,
|
80
80
|
(directory, callback) => {
|
81
|
-
|
81
|
+
/** @type {NonNullable<OutputFileSystem["readdir"]>} */
|
82
|
+
(fs.readdir)(join(fs, outputPath, directory), (err, entries) => {
|
82
83
|
if (err) {
|
83
84
|
if (err.code === "ENOENT") return callback();
|
84
85
|
if (err.code === "ENOTDIR") {
|
@@ -128,7 +129,8 @@ const getDiffToOldAssets = (currentAssets, oldAssets) => {
|
|
128
129
|
*/
|
129
130
|
const doStat = (fs, filename, callback) => {
|
130
131
|
if ("lstat" in fs) {
|
131
|
-
|
132
|
+
/** @type {NonNullable<OutputFileSystem["lstat"]>} */
|
133
|
+
(fs.lstat)(filename, callback);
|
132
134
|
} else {
|
133
135
|
fs.stat(filename, callback);
|
134
136
|
}
|
@@ -145,6 +147,9 @@ const doStat = (fs, filename, callback) => {
|
|
145
147
|
* @returns {void}
|
146
148
|
*/
|
147
149
|
const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
150
|
+
/**
|
151
|
+
* @param {string} msg message
|
152
|
+
*/
|
148
153
|
const log = msg => {
|
149
154
|
if (dry) {
|
150
155
|
logger.info(msg);
|
@@ -165,6 +170,10 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
165
170
|
jobs,
|
166
171
|
10,
|
167
172
|
({ type, filename, parent }, push, callback) => {
|
173
|
+
/**
|
174
|
+
* @param {Error & { code?: string }} err error
|
175
|
+
* @returns {void}
|
176
|
+
*/
|
168
177
|
const handleError = err => {
|
169
178
|
if (err.code === "ENOENT") {
|
170
179
|
log(`${filename} was removed during cleaning by something else`);
|
@@ -195,7 +204,9 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
|
|
195
204
|
});
|
196
205
|
return callback();
|
197
206
|
}
|
198
|
-
|
207
|
+
|
208
|
+
/** @type {NonNullable<OutputFileSystem["readdir"]>} */
|
209
|
+
(fs.readdir)(path, (err, entries) => {
|
199
210
|
if (err) return handleError(err);
|
200
211
|
/** @type {Job} */
|
201
212
|
const deleteJob = {
|
@@ -317,9 +328,17 @@ class CleanPlugin {
|
|
317
328
|
typeof keep === "function"
|
318
329
|
? keep
|
319
330
|
: typeof keep === "string"
|
320
|
-
?
|
331
|
+
? /**
|
332
|
+
* @param {string} path path
|
333
|
+
* @returns {boolean} true, if the path should be kept
|
334
|
+
*/
|
335
|
+
path => path.startsWith(keep)
|
321
336
|
: typeof keep === "object" && keep.test
|
322
|
-
?
|
337
|
+
? /**
|
338
|
+
* @param {string} path path
|
339
|
+
* @returns {boolean} true, if the path should be kept
|
340
|
+
*/
|
341
|
+
path => keep.test(path)
|
323
342
|
: () => false;
|
324
343
|
|
325
344
|
// We assume that no external modification happens while the compiler is active
|
@@ -371,6 +390,10 @@ class CleanPlugin {
|
|
371
390
|
|
372
391
|
const outputPath = compilation.getPath(compiler.outputPath, {});
|
373
392
|
|
393
|
+
/**
|
394
|
+
* @param {string} path path
|
395
|
+
* @returns {boolean} true, if needs to be kept
|
396
|
+
*/
|
374
397
|
const isKept = path => {
|
375
398
|
const result = hooks.keep.call(path);
|
376
399
|
if (result !== undefined) return result;
|
@@ -378,7 +401,7 @@ class CleanPlugin {
|
|
378
401
|
};
|
379
402
|
|
380
403
|
/**
|
381
|
-
* @param {Error=} err err
|
404
|
+
* @param {(Error | null)=} err err
|
382
405
|
* @param {Set<string>=} diff diff
|
383
406
|
*/
|
384
407
|
const diffCallback = (err, diff) => {
|
@@ -392,7 +415,7 @@ class CleanPlugin {
|
|
392
415
|
outputPath,
|
393
416
|
dry,
|
394
417
|
logger,
|
395
|
-
diff,
|
418
|
+
/** @type {Set<string>} */ (diff),
|
396
419
|
isKept,
|
397
420
|
(err, keptAssets) => {
|
398
421
|
if (err) {
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
-
const {
|
8
|
+
const { getOrInsert } = require("./util/MapHelpers");
|
9
9
|
const { first } = require("./util/SetHelpers");
|
10
10
|
const createHash = require("./util/createHash");
|
11
11
|
const { runtimeToString, RuntimeSpecMap } = require("./util/runtime");
|
@@ -147,7 +147,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
|
|
147
147
|
* @returns {void}
|
148
148
|
*/
|
149
149
|
add(module, runtime, result) {
|
150
|
-
const map =
|
150
|
+
const map = getOrInsert(this.map, module, () => new RuntimeSpecMap());
|
151
151
|
map.set(runtime, result);
|
152
152
|
}
|
153
153
|
}
|