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
@@ -59,7 +59,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
|
|
59
59
|
);
|
60
60
|
}
|
61
61
|
return {
|
62
|
-
name: /** @type {string
|
62
|
+
name: /** @type {string} */ (name)
|
63
63
|
};
|
64
64
|
}
|
65
65
|
|
@@ -106,6 +106,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
|
|
106
106
|
.join("\n");
|
107
107
|
|
108
108
|
// Define __esModule flag on all internal variables and helpers
|
109
|
+
/** @type {string[]} */
|
109
110
|
const externalVarInitialization = [];
|
110
111
|
|
111
112
|
// The system.register format requires an array of setter functions for externals.
|
@@ -148,6 +148,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
148
148
|
requiredExternals = externals;
|
149
149
|
}
|
150
150
|
|
151
|
+
/**
|
152
|
+
* @param {string} str the string to replace
|
153
|
+
* @returns {string} the replaced keys
|
154
|
+
*/
|
151
155
|
const replaceKeys = str => {
|
152
156
|
return compilation.getPath(str, {
|
153
157
|
chunk
|
@@ -178,6 +182,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
178
182
|
);
|
179
183
|
};
|
180
184
|
|
185
|
+
/**
|
186
|
+
* @param {string} type the type
|
187
|
+
* @returns {string} external require array
|
188
|
+
*/
|
181
189
|
const externalsRequireArray = type => {
|
182
190
|
return replaceKeys(
|
183
191
|
externals
|
@@ -185,7 +193,9 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
185
193
|
let expr;
|
186
194
|
let request = m.request;
|
187
195
|
if (typeof request === "object") {
|
188
|
-
request =
|
196
|
+
request =
|
197
|
+
/** @type {Record<string, string | string[]>} */
|
198
|
+
(request)[type];
|
189
199
|
}
|
190
200
|
if (request === undefined) {
|
191
201
|
throw new Error(
|
@@ -208,6 +218,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
208
218
|
);
|
209
219
|
};
|
210
220
|
|
221
|
+
/**
|
222
|
+
* @param {ExternalModule[]} modules external modules
|
223
|
+
* @returns {string} arguments
|
224
|
+
*/
|
211
225
|
const externalsArguments = modules => {
|
212
226
|
return modules
|
213
227
|
.map(
|
@@ -242,6 +256,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
242
256
|
|
243
257
|
const { auxiliaryComment, namedDefine, names } = options;
|
244
258
|
|
259
|
+
/**
|
260
|
+
* @param {keyof LibraryCustomUmdCommentObject} type type
|
261
|
+
* @returns {string} comment
|
262
|
+
*/
|
245
263
|
const getAuxiliaryComment = type => {
|
246
264
|
if (auxiliaryComment) {
|
247
265
|
if (typeof auxiliaryComment === "string")
|
@@ -295,7 +313,11 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
295
313
|
" else\n" +
|
296
314
|
" " +
|
297
315
|
replaceKeys(
|
298
|
-
accessorAccess(
|
316
|
+
accessorAccess(
|
317
|
+
"root",
|
318
|
+
/** @type {string | string[]} */ (names.root) ||
|
319
|
+
/** @type {string} */ (names.commonjs)
|
320
|
+
)
|
299
321
|
) +
|
300
322
|
" = factory(" +
|
301
323
|
externalsRootArray(externals) +
|
package/lib/logging/runtime.js
CHANGED
@@ -8,11 +8,18 @@
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
9
|
const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
|
10
10
|
|
11
|
+
/** @typedef {import("../Chunk")} Chunk */
|
11
12
|
/** @typedef {import("../Compiler")} Compiler */
|
12
13
|
|
14
|
+
/** @typedef {Object} CommonJsChunkLoadingPluginOptions
|
15
|
+
* @property {boolean} [asyncChunkLoading] enable async chunk loading
|
16
|
+
*/
|
17
|
+
|
13
18
|
class CommonJsChunkLoadingPlugin {
|
14
|
-
|
15
|
-
|
19
|
+
/**
|
20
|
+
* @param {CommonJsChunkLoadingPluginOptions} [options] options
|
21
|
+
*/
|
22
|
+
constructor(options = {}) {
|
16
23
|
this._asyncChunkLoading = options.asyncChunkLoading;
|
17
24
|
}
|
18
25
|
|
@@ -36,6 +43,10 @@ class CommonJsChunkLoadingPlugin {
|
|
36
43
|
"CommonJsChunkLoadingPlugin",
|
37
44
|
compilation => {
|
38
45
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
46
|
+
/**
|
47
|
+
* @param {Chunk} chunk chunk
|
48
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
49
|
+
*/
|
39
50
|
const isEnabledForChunk = chunk => {
|
40
51
|
const options = chunk.getEntryOptions();
|
41
52
|
const chunkLoading =
|
@@ -45,6 +56,10 @@ class CommonJsChunkLoadingPlugin {
|
|
45
56
|
return chunkLoading === chunkLoadingValue;
|
46
57
|
};
|
47
58
|
const onceForChunkSet = new WeakSet();
|
59
|
+
/**
|
60
|
+
* @param {Chunk} chunk chunk
|
61
|
+
* @param {Set<string>} set runtime requirements
|
62
|
+
*/
|
48
63
|
const handler = (chunk, set) => {
|
49
64
|
if (onceForChunkSet.has(chunk)) return;
|
50
65
|
onceForChunkSet.add(chunk);
|
@@ -31,6 +31,7 @@ const builtins = [
|
|
31
31
|
"http2",
|
32
32
|
"https",
|
33
33
|
"inspector",
|
34
|
+
"inspector/promises",
|
34
35
|
"module",
|
35
36
|
"net",
|
36
37
|
"os",
|
@@ -42,8 +43,10 @@ const builtins = [
|
|
42
43
|
"punycode",
|
43
44
|
"querystring",
|
44
45
|
"readline",
|
46
|
+
"readline/promises",
|
45
47
|
"repl",
|
46
48
|
"stream",
|
49
|
+
"stream/consumers",
|
47
50
|
"stream/promises",
|
48
51
|
"stream/web",
|
49
52
|
"string_decoder",
|
@@ -10,9 +10,17 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
|
|
10
10
|
|
11
11
|
/** @typedef {import("../Compiler")} Compiler */
|
12
12
|
|
13
|
+
/**
|
14
|
+
* @typedef {Object} NodeTemplatePluginOptions
|
15
|
+
* @property {boolean} [asyncChunkLoading] enable async chunk loading
|
16
|
+
*/
|
17
|
+
|
13
18
|
class NodeTemplatePlugin {
|
14
|
-
|
15
|
-
|
19
|
+
/**
|
20
|
+
* @param {NodeTemplatePluginOptions} [options] options object
|
21
|
+
*/
|
22
|
+
constructor(options = {}) {
|
23
|
+
this._options = options;
|
16
24
|
}
|
17
25
|
|
18
26
|
/**
|
@@ -29,7 +29,7 @@ class NodeWatchFileSystem {
|
|
29
29
|
* @param {Iterable<string>} missing watched exitance entries
|
30
30
|
* @param {number} startTime timestamp of start time
|
31
31
|
* @param {WatchOptions} options options object
|
32
|
-
* @param {function(Error=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
|
32
|
+
* @param {function((Error | null)=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
|
33
33
|
* @param {function(string, number): void} callbackUndelayed callback when the first change was detected
|
34
34
|
* @returns {Watcher} a watcher
|
35
35
|
*/
|
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
23
|
+
/**
|
24
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
25
|
+
*/
|
21
26
|
constructor(runtimeRequirements) {
|
22
27
|
super("readFile chunk loading", RuntimeModule.STAGE_ATTACH);
|
23
28
|
this.runtimeRequirements = runtimeRequirements;
|
@@ -43,11 +48,13 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
43
48
|
}
|
44
49
|
|
45
50
|
/**
|
46
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
47
52
|
*/
|
48
53
|
generate() {
|
49
|
-
const
|
50
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
51
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
52
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
53
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -69,8 +76,8 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
69
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
70
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
71
78
|
|
72
|
-
const outputName =
|
73
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
74
81
|
{
|
75
82
|
chunk,
|
76
83
|
contentHashType: "javascript"
|
@@ -78,7 +85,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
78
85
|
);
|
79
86
|
const rootOutputDir = getUndoPath(
|
80
87
|
outputName,
|
81
|
-
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
82
89
|
false
|
83
90
|
);
|
84
91
|
|
@@ -124,7 +131,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
124
131
|
"}"
|
125
132
|
]),
|
126
133
|
"}",
|
127
|
-
`if(runtime) runtime(
|
134
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
128
135
|
"for(var i = 0; i < chunkIds.length; i++) {",
|
129
136
|
Template.indent([
|
130
137
|
"if(installedChunks[chunkIds[i]]) {",
|
@@ -178,7 +185,9 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
178
185
|
"});",
|
179
186
|
"promises.push(installedChunkData[2] = promise);"
|
180
187
|
]),
|
181
|
-
|
188
|
+
hasJsMatcher === true
|
189
|
+
? "}"
|
190
|
+
: "} else installedChunks[chunkId] = 0;"
|
182
191
|
]),
|
183
192
|
"}"
|
184
193
|
]),
|
@@ -191,7 +200,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
191
200
|
"",
|
192
201
|
withExternalInstallChunk
|
193
202
|
? Template.asString([
|
194
|
-
|
203
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
195
204
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
196
205
|
])
|
197
206
|
: "// no external install chunk",
|
@@ -5,10 +5,12 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
14
16
|
class ReadFileCompileAsyncWasmPlugin {
|
@@ -26,6 +28,10 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
26
28
|
"ReadFileCompileAsyncWasmPlugin",
|
27
29
|
compilation => {
|
28
30
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
31
|
+
/**
|
32
|
+
* @param {Chunk} chunk chunk
|
33
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
34
|
+
*/
|
29
35
|
const isEnabledForChunk = chunk => {
|
30
36
|
const options = chunk.getEntryOptions();
|
31
37
|
const wasmLoading =
|
@@ -34,12 +40,16 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
34
40
|
: globalWasmLoading;
|
35
41
|
return wasmLoading === this._type;
|
36
42
|
};
|
43
|
+
const { importMetaName } = compilation.outputOptions;
|
44
|
+
/**
|
45
|
+
* @type {(path: string) => string}
|
46
|
+
*/
|
37
47
|
const generateLoadBinaryCode = this._import
|
38
48
|
? path =>
|
39
49
|
Template.asString([
|
40
50
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
41
51
|
Template.indent([
|
42
|
-
`readFile(new URL(${path},
|
52
|
+
`readFile(new URL(${path}, ${importMetaName}.url), (err, buffer) => {`,
|
43
53
|
Template.indent([
|
44
54
|
"if (err) return reject(err);",
|
45
55
|
"",
|
@@ -85,7 +95,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
85
95
|
if (
|
86
96
|
!chunkGraph.hasModuleInGraph(
|
87
97
|
chunk,
|
88
|
-
m => m.type ===
|
98
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
|
89
99
|
)
|
90
100
|
) {
|
91
101
|
return;
|
@@ -5,17 +5,27 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
16
|
+
/**
|
17
|
+
* @typedef {Object} ReadFileCompileWasmPluginOptions
|
18
|
+
* @property {boolean} [mangleImports] mangle imports
|
19
|
+
*/
|
20
|
+
|
14
21
|
// TODO webpack 6 remove
|
15
22
|
|
16
23
|
class ReadFileCompileWasmPlugin {
|
17
|
-
|
18
|
-
|
24
|
+
/**
|
25
|
+
* @param {ReadFileCompileWasmPluginOptions} [options] options object
|
26
|
+
*/
|
27
|
+
constructor(options = {}) {
|
28
|
+
this.options = options;
|
19
29
|
}
|
20
30
|
|
21
31
|
/**
|
@@ -28,6 +38,10 @@ class ReadFileCompileWasmPlugin {
|
|
28
38
|
"ReadFileCompileWasmPlugin",
|
29
39
|
compilation => {
|
30
40
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
41
|
+
/**
|
42
|
+
* @param {Chunk} chunk chunk
|
43
|
+
* @returns {boolean} true, when wasm loading is enabled for the chunk
|
44
|
+
*/
|
31
45
|
const isEnabledForChunk = chunk => {
|
32
46
|
const options = chunk.getEntryOptions();
|
33
47
|
const wasmLoading =
|
@@ -36,6 +50,10 @@ class ReadFileCompileWasmPlugin {
|
|
36
50
|
: globalWasmLoading;
|
37
51
|
return wasmLoading === "async-node";
|
38
52
|
};
|
53
|
+
/**
|
54
|
+
* @param {string} path path to wasm file
|
55
|
+
* @returns {string} generated code to load the wasm file
|
56
|
+
*/
|
39
57
|
const generateLoadBinaryCode = path =>
|
40
58
|
Template.asString([
|
41
59
|
"new Promise(function (resolve, reject) {",
|
@@ -69,7 +87,7 @@ class ReadFileCompileWasmPlugin {
|
|
69
87
|
if (
|
70
88
|
!chunkGraph.hasModuleInGraph(
|
71
89
|
chunk,
|
72
|
-
m => m.type ===
|
90
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
73
91
|
)
|
74
92
|
) {
|
75
93
|
return;
|
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
18
|
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
|
20
22
|
class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
23
|
+
/**
|
24
|
+
* @param {ReadonlySet<string>} runtimeRequirements runtime requirements
|
25
|
+
*/
|
21
26
|
constructor(runtimeRequirements) {
|
22
27
|
super("require chunk loading", RuntimeModule.STAGE_ATTACH);
|
23
28
|
this.runtimeRequirements = runtimeRequirements;
|
@@ -43,11 +48,13 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
43
48
|
}
|
44
49
|
|
45
50
|
/**
|
46
|
-
* @returns {string} runtime code
|
51
|
+
* @returns {string | null} runtime code
|
47
52
|
*/
|
48
53
|
generate() {
|
49
|
-
const
|
50
|
-
const
|
54
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
55
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
56
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
57
|
+
const { runtimeTemplate } = compilation;
|
51
58
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
52
59
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
53
60
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -69,8 +76,8 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
69
76
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
70
77
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
71
78
|
|
72
|
-
const outputName =
|
73
|
-
getChunkFilenameTemplate(chunk,
|
79
|
+
const outputName = compilation.getPath(
|
80
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
74
81
|
{
|
75
82
|
chunk,
|
76
83
|
contentHashType: "javascript"
|
@@ -78,7 +85,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
78
85
|
);
|
79
86
|
const rootOutputDir = getUndoPath(
|
80
87
|
outputName,
|
81
|
-
|
88
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
82
89
|
true
|
83
90
|
);
|
84
91
|
|
@@ -124,7 +131,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
124
131
|
"}"
|
125
132
|
]),
|
126
133
|
"}",
|
127
|
-
`if(runtime) runtime(
|
134
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
128
135
|
"for(var i = 0; i < chunkIds.length; i++)",
|
129
136
|
Template.indent("installedChunks[chunkIds[i]] = 1;"),
|
130
137
|
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
|
@@ -163,7 +170,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
163
170
|
"",
|
164
171
|
withExternalInstallChunk
|
165
172
|
? Template.asString([
|
166
|
-
|
173
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
167
174
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
168
175
|
])
|
169
176
|
: "// no external install chunk",
|
package/lib/node/nodeConsole.js
CHANGED
@@ -38,10 +38,8 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
38
38
|
|
39
39
|
const writeStatusMessage = () => {
|
40
40
|
if (!currentStatusMessage) return;
|
41
|
-
const l = stream.columns;
|
42
|
-
const args = l
|
43
|
-
? truncateArgs(currentStatusMessage, l - 1)
|
44
|
-
: currentStatusMessage;
|
41
|
+
const l = stream.columns || 40;
|
42
|
+
const args = truncateArgs(currentStatusMessage, l - 1);
|
45
43
|
const str = args.join(" ");
|
46
44
|
const coloredStr = `\u001b[1m${str}\u001b[39m\u001b[22m`;
|
47
45
|
stream.write(`\x1b[2K\r${coloredStr}`);
|
@@ -10,7 +10,15 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
10
10
|
/** @typedef {import("../Chunk")} Chunk */
|
11
11
|
/** @typedef {import("../Compiler")} Compiler */
|
12
12
|
|
13
|
+
/**
|
14
|
+
* @typedef {Object} AggressiveMergingPluginOptions
|
15
|
+
* @property {number=} minSizeReduce minimal size reduction to trigger merging
|
16
|
+
*/
|
17
|
+
|
13
18
|
class AggressiveMergingPlugin {
|
19
|
+
/**
|
20
|
+
* @param {AggressiveMergingPluginOptions=} [options] options object
|
21
|
+
*/
|
14
22
|
constructor(options) {
|
15
23
|
if (
|
16
24
|
(options !== undefined && typeof options !== "object") ||
|
@@ -30,6 +30,12 @@ const validate = createSchemaValidation(
|
|
30
30
|
}
|
31
31
|
);
|
32
32
|
|
33
|
+
/**
|
34
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
35
|
+
* @param {Chunk} oldChunk the old chunk
|
36
|
+
* @param {Chunk} newChunk the new chunk
|
37
|
+
* @returns {(module: Module) => void} function to move module between chunks
|
38
|
+
*/
|
33
39
|
const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => {
|
34
40
|
return module => {
|
35
41
|
chunkGraph.disconnectChunkAndModule(oldChunk, module);
|
@@ -92,6 +98,7 @@ class AggressiveSplittingPlugin {
|
|
92
98
|
compilation => {
|
93
99
|
let needAdditionalSeal = false;
|
94
100
|
let newSplits;
|
101
|
+
/** @type {Set<Chunk>} */
|
95
102
|
let fromAggressiveSplittingSet;
|
96
103
|
let chunkSplitDataMap;
|
97
104
|
compilation.hooks.optimize.tap("AggressiveSplittingPlugin", () => {
|
@@ -133,8 +140,8 @@ class AggressiveSplittingPlugin {
|
|
133
140
|
? recordedSplits.concat(newSplits)
|
134
141
|
: recordedSplits;
|
135
142
|
|
136
|
-
const minSize = this.options.minSize;
|
137
|
-
const maxSize = this.options.maxSize;
|
143
|
+
const minSize = /** @type {number} */ (this.options.minSize);
|
144
|
+
const maxSize = /** @type {number} */ (this.options.maxSize);
|
138
145
|
|
139
146
|
const applySplit = splitData => {
|
140
147
|
// Cannot split if id is already taken
|
@@ -15,6 +15,7 @@ const {
|
|
15
15
|
const ConcatenationScope = require("../ConcatenationScope");
|
16
16
|
const { UsageState } = require("../ExportsInfo");
|
17
17
|
const Module = require("../Module");
|
18
|
+
const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
|
18
19
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
19
20
|
const Template = require("../Template");
|
20
21
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
@@ -26,6 +27,7 @@ const createHash = require("../util/createHash");
|
|
26
27
|
const { makePathsRelative } = require("../util/identifier");
|
27
28
|
const makeSerializable = require("../util/makeSerializable");
|
28
29
|
const propertyAccess = require("../util/propertyAccess");
|
30
|
+
const { propertyName } = require("../util/propertyName");
|
29
31
|
const {
|
30
32
|
filterRuntime,
|
31
33
|
intersectRuntime,
|
@@ -683,7 +685,7 @@ class ConcatenatedModule extends Module {
|
|
683
685
|
* @param {Set<Module>=} options.modules all concatenated modules
|
684
686
|
*/
|
685
687
|
constructor({ identifier, rootModule, modules, runtime }) {
|
686
|
-
super(
|
688
|
+
super(JAVASCRIPT_MODULE_TYPE_ESM, null, rootModule && rootModule.layer);
|
687
689
|
|
688
690
|
// Info from Factory
|
689
691
|
/** @type {string} */
|
@@ -1483,7 +1485,7 @@ class ConcatenatedModule extends Module {
|
|
1483
1485
|
const definitions = [];
|
1484
1486
|
for (const [key, value] of exportsMap) {
|
1485
1487
|
definitions.push(
|
1486
|
-
`\n ${
|
1488
|
+
`\n ${propertyName(key)}: ${runtimeTemplate.returningFunction(
|
1487
1489
|
value(requestShortener)
|
1488
1490
|
)}`
|
1489
1491
|
);
|
@@ -1528,9 +1530,9 @@ class ConcatenatedModule extends Module {
|
|
1528
1530
|
true
|
1529
1531
|
);
|
1530
1532
|
nsObj.push(
|
1531
|
-
`\n ${
|
1532
|
-
|
1533
|
-
)}
|
1533
|
+
`\n ${propertyName(usedName)}: ${runtimeTemplate.returningFunction(
|
1534
|
+
finalName
|
1535
|
+
)}`
|
1534
1536
|
);
|
1535
1537
|
}
|
1536
1538
|
}
|
@@ -1609,7 +1611,7 @@ ${defineGetters}`
|
|
1609
1611
|
result.add(`if (${condition}) {\n`);
|
1610
1612
|
}
|
1611
1613
|
result.add(
|
1612
|
-
`var ${info.name} =
|
1614
|
+
`var ${info.name} = ${RuntimeGlobals.require}(${JSON.stringify(
|
1613
1615
|
chunkGraph.getModuleId(info.module)
|
1614
1616
|
)});`
|
1615
1617
|
);
|
@@ -21,6 +21,9 @@ class EnsureChunkConditionsPlugin {
|
|
21
21
|
compiler.hooks.compilation.tap(
|
22
22
|
"EnsureChunkConditionsPlugin",
|
23
23
|
compilation => {
|
24
|
+
/**
|
25
|
+
* @param {Iterable<Chunk>} chunks the chunks
|
26
|
+
*/
|
24
27
|
const handler = chunks => {
|
25
28
|
const chunkGraph = compilation.chunkGraph;
|
26
29
|
// These sets are hoisted here to save memory
|
@@ -6,6 +6,7 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
/** @typedef {import("../Chunk")} Chunk */
|
9
|
+
/** @typedef {import("../Chunk").ChunkId} ChunkId */
|
9
10
|
/** @typedef {import("../Compiler")} Compiler */
|
10
11
|
/** @typedef {import("../Module")} Module */
|
11
12
|
|
@@ -61,13 +62,15 @@ class FlagIncludedChunksPlugin {
|
|
61
62
|
for (const chunk of chunks) {
|
62
63
|
let hash = 0;
|
63
64
|
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
64
|
-
hash |= moduleBits.get(module);
|
65
|
+
hash |= /** @type {number} */ (moduleBits.get(module));
|
65
66
|
}
|
66
67
|
chunkModulesHash.set(chunk, hash);
|
67
68
|
}
|
68
69
|
|
69
70
|
for (const chunkA of chunks) {
|
70
|
-
const chunkAHash =
|
71
|
+
const chunkAHash =
|
72
|
+
/** @type {number} */
|
73
|
+
(chunkModulesHash.get(chunkA));
|
71
74
|
const chunkAModulesCount =
|
72
75
|
chunkGraph.getNumberOfChunkModules(chunkA);
|
73
76
|
if (chunkAModulesCount === 0) continue;
|
@@ -81,7 +84,7 @@ class FlagIncludedChunksPlugin {
|
|
81
84
|
bestModule = module;
|
82
85
|
}
|
83
86
|
loopB: for (const chunkB of chunkGraph.getModuleChunksIterable(
|
84
|
-
bestModule
|
87
|
+
/** @type {Module} */ (bestModule)
|
85
88
|
)) {
|
86
89
|
// as we iterate the same iterables twice
|
87
90
|
// skip if we find ourselves
|
@@ -100,14 +103,17 @@ class FlagIncludedChunksPlugin {
|
|
100
103
|
// is chunkA in chunkB?
|
101
104
|
|
102
105
|
// we do a cheap check for the hash value
|
103
|
-
const chunkBHash =
|
106
|
+
const chunkBHash =
|
107
|
+
/** @type {number} */
|
108
|
+
(chunkModulesHash.get(chunkB));
|
104
109
|
if ((chunkBHash & chunkAHash) !== chunkAHash) continue;
|
105
110
|
|
106
111
|
// compare all modules
|
107
112
|
for (const m of chunkGraph.getChunkModulesIterable(chunkA)) {
|
108
113
|
if (!chunkGraph.isModuleInChunk(m, chunkB)) continue loopB;
|
109
114
|
}
|
110
|
-
|
115
|
+
/** @type {ChunkId[]} */
|
116
|
+
(chunkB.ids).push(/** @type {ChunkId} */ (chunkA.id));
|
111
117
|
}
|
112
118
|
}
|
113
119
|
}
|