webpack 5.76.1 → 5.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +4 -0
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +194 -194
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +6 -0
- package/lib/util/StringXor.js +51 -0
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +14 -1
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +132 -5
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1608 -667
@@ -19,6 +19,11 @@ const Template = require("../Template");
|
|
19
19
|
/** @typedef {import("../NormalModule")} NormalModule */
|
20
20
|
/** @typedef {import("../util/Hash")} Hash */
|
21
21
|
|
22
|
+
/**
|
23
|
+
* @template T
|
24
|
+
* @typedef {import("../InitFragment")<T>} InitFragment
|
25
|
+
*/
|
26
|
+
|
22
27
|
const TYPES = new Set(["javascript"]);
|
23
28
|
|
24
29
|
class CssExportsGenerator extends Generator {
|
@@ -36,6 +41,7 @@ class CssExportsGenerator extends Generator {
|
|
36
41
|
*/
|
37
42
|
generate(module, generateContext) {
|
38
43
|
const source = new ReplaceSource(new RawSource(""));
|
44
|
+
/** @type {InitFragment<TODO>[]} */
|
39
45
|
const initFragments = [];
|
40
46
|
const cssExports = new Map();
|
41
47
|
|
@@ -57,6 +63,9 @@ class CssExportsGenerator extends Generator {
|
|
57
63
|
cssExports
|
58
64
|
};
|
59
65
|
|
66
|
+
/**
|
67
|
+
* @param {Dependency} dependency the dependency
|
68
|
+
*/
|
60
69
|
const handleDependency = dependency => {
|
61
70
|
const constructor = /** @type {new (...args: any[]) => Dependency} */ (
|
62
71
|
dependency.constructor
|
package/lib/css/CssGenerator.js
CHANGED
@@ -30,8 +30,9 @@ class CssGenerator extends Generator {
|
|
30
30
|
* @returns {Source} generated code
|
31
31
|
*/
|
32
32
|
generate(module, generateContext) {
|
33
|
-
const originalSource = module.originalSource();
|
33
|
+
const originalSource = /** @type {Source} */ (module.originalSource());
|
34
34
|
const source = new ReplaceSource(originalSource);
|
35
|
+
/** @type {InitFragment[]} */
|
35
36
|
const initFragments = [];
|
36
37
|
const cssExports = new Map();
|
37
38
|
|
@@ -51,6 +52,9 @@ class CssGenerator extends Generator {
|
|
51
52
|
cssExports
|
52
53
|
};
|
53
54
|
|
55
|
+
/**
|
56
|
+
* @param {Dependency} dependency dependency
|
57
|
+
*/
|
54
58
|
const handleDependency = dependency => {
|
55
59
|
const constructor = /** @type {new (...args: any[]) => Dependency} */ (
|
56
60
|
dependency.constructor
|
@@ -14,6 +14,8 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
14
14
|
const { chunkHasCss } = require("./CssModulesPlugin");
|
15
15
|
|
16
16
|
/** @typedef {import("../Chunk")} Chunk */
|
17
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
18
|
+
/** @typedef {import("../Compilation").RuntimeRequirementsContext} RuntimeRequirementsContext */
|
17
19
|
|
18
20
|
/**
|
19
21
|
* @typedef {Object} JsonpCompilationPluginHooks
|
@@ -44,15 +46,17 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
44
46
|
return hooks;
|
45
47
|
}
|
46
48
|
|
47
|
-
|
49
|
+
/**
|
50
|
+
* @param {Set<string>} runtimeRequirements runtime requirements
|
51
|
+
*/
|
52
|
+
constructor(runtimeRequirements) {
|
48
53
|
super("css loading", 10);
|
49
54
|
|
50
55
|
this._runtimeRequirements = runtimeRequirements;
|
51
|
-
this.runtimeOptions = runtimeOptions;
|
52
56
|
}
|
53
57
|
|
54
58
|
/**
|
55
|
-
* @returns {string} runtime code
|
59
|
+
* @returns {string | null} runtime code
|
56
60
|
*/
|
57
61
|
generate() {
|
58
62
|
const { compilation, chunk, _runtimeRequirements } = this;
|
@@ -64,10 +68,15 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
64
68
|
uniqueName,
|
65
69
|
chunkLoadTimeout: loadTimeout
|
66
70
|
}
|
67
|
-
} = compilation;
|
71
|
+
} = /** @type {Compilation} */ (compilation);
|
68
72
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
69
73
|
const conditionMap = chunkGraph.getChunkConditionMap(
|
70
|
-
chunk,
|
74
|
+
/** @type {Chunk} */ (chunk),
|
75
|
+
/**
|
76
|
+
* @param {Chunk} chunk the chunk
|
77
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
78
|
+
* @returns {boolean} true, if the chunk has css
|
79
|
+
*/
|
71
80
|
(chunk, chunkGraph) =>
|
72
81
|
!!chunkGraph.getChunkModulesIterableBySourceType(chunk, "css")
|
73
82
|
);
|
@@ -76,12 +85,15 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
76
85
|
const withLoading =
|
77
86
|
_runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers) &&
|
78
87
|
hasCssMatcher !== false;
|
88
|
+
/** @type {boolean} */
|
79
89
|
const withHmr = _runtimeRequirements.has(
|
80
90
|
RuntimeGlobals.hmrDownloadUpdateHandlers
|
81
91
|
);
|
92
|
+
/** @type {Set<number | string | null>} */
|
82
93
|
const initialChunkIdsWithCss = new Set();
|
94
|
+
/** @type {Set<number | string | null>} */
|
83
95
|
const initialChunkIdsWithoutCss = new Set();
|
84
|
-
for (const c of chunk.getAllInitialChunks()) {
|
96
|
+
for (const c of /** @type {Chunk} */ (chunk).getAllInitialChunks()) {
|
85
97
|
(chunkHasCss(c, chunkGraph)
|
86
98
|
? initialChunkIdsWithCss
|
87
99
|
: initialChunkIdsWithoutCss
|
@@ -92,8 +104,9 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
92
104
|
return null;
|
93
105
|
}
|
94
106
|
|
95
|
-
const { createStylesheet } =
|
96
|
-
|
107
|
+
const { createStylesheet } = CssLoadingRuntimeModule.getCompilationHooks(
|
108
|
+
/** @type {Compilation} */ (compilation)
|
109
|
+
);
|
97
110
|
|
98
111
|
const stateExpression = withHmr
|
99
112
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_css`
|
@@ -111,7 +124,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
111
124
|
? crossOriginLoading === "use-credentials"
|
112
125
|
? 'link.crossOrigin = "use-credentials";'
|
113
126
|
: Template.asString([
|
114
|
-
"if (link.
|
127
|
+
"if (link.href.indexOf(window.location.origin + '/') !== 0) {",
|
115
128
|
Template.indent(
|
116
129
|
`link.crossOrigin = ${JSON.stringify(crossOriginLoading)};`
|
117
130
|
),
|
@@ -120,7 +133,16 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
120
133
|
: ""
|
121
134
|
]);
|
122
135
|
|
136
|
+
/** @type {(str: string) => number} */
|
123
137
|
const cc = str => str.charCodeAt(0);
|
138
|
+
const name = uniqueName
|
139
|
+
? runtimeTemplate.concatenation(
|
140
|
+
"--webpack-",
|
141
|
+
{ expr: "uniqueName" },
|
142
|
+
"-",
|
143
|
+
{ expr: "chunkId" }
|
144
|
+
)
|
145
|
+
: runtimeTemplate.concatenation("--webpack-", { expr: "chunkId" });
|
124
146
|
|
125
147
|
return Template.asString([
|
126
148
|
"// object to store loaded and loading chunks",
|
@@ -143,18 +165,27 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
143
165
|
[
|
144
166
|
`var data, token = "", token2, exports = {}, exportsWithId = [], exportsWithDashes = [], ${
|
145
167
|
withHmr ? "moduleIds = [], " : ""
|
146
|
-
}i = 0, cc = 1;`,
|
147
|
-
"try {
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
168
|
+
}name = ${name}, i = 0, cc = 1;`,
|
169
|
+
"try {",
|
170
|
+
Template.indent([
|
171
|
+
"if(!link) link = loadStylesheet(chunkId);",
|
172
|
+
// `link.sheet.rules` for legacy browsers
|
173
|
+
"var cssRules = link.sheet.cssRules || link.sheet.rules;",
|
174
|
+
"var j = cssRules.length - 1;",
|
175
|
+
"while(j > -1 && !data) {",
|
176
|
+
Template.indent([
|
177
|
+
"var style = cssRules[j--].style;",
|
178
|
+
"if(!style) continue;",
|
179
|
+
`data = style.getPropertyValue(name);`
|
180
|
+
]),
|
181
|
+
"}"
|
182
|
+
]),
|
183
|
+
"}catch(e){}",
|
184
|
+
"if(!data) {",
|
185
|
+
Template.indent([
|
186
|
+
"data = getComputedStyle(document.head).getPropertyValue(name);"
|
187
|
+
]),
|
188
|
+
"}",
|
158
189
|
"if(!data) return [];",
|
159
190
|
"for(; cc; i++) {",
|
160
191
|
Template.indent([
|
@@ -232,7 +263,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
232
263
|
"if(!link) {",
|
233
264
|
Template.indent([
|
234
265
|
"needAttach = true;",
|
235
|
-
createStylesheet.call(code, this.chunk)
|
266
|
+
createStylesheet.call(code, /** @type {Chunk} */ (this.chunk))
|
236
267
|
]),
|
237
268
|
"}",
|
238
269
|
`var onLinkComplete = ${runtimeTemplate.basicFunction(
|
@@ -5,10 +5,18 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
-
const { ConcatSource } = require("webpack-sources");
|
8
|
+
const { ConcatSource, PrefixSource } = require("webpack-sources");
|
9
|
+
const CssModule = require("../CssModule");
|
9
10
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
11
|
+
const {
|
12
|
+
CSS_MODULE_TYPE,
|
13
|
+
CSS_MODULE_TYPE_GLOBAL,
|
14
|
+
CSS_MODULE_TYPE_MODULE,
|
15
|
+
CSS_MODULE_TYPE_AUTO
|
16
|
+
} = require("../ModuleTypeConstants");
|
10
17
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
11
18
|
const SelfModuleFactory = require("../SelfModuleFactory");
|
19
|
+
const WebpackError = require("../WebpackError");
|
12
20
|
const CssExportDependency = require("../dependencies/CssExportDependency");
|
13
21
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
14
22
|
const CssLocalIdentifierDependency = require("../dependencies/CssLocalIdentifierDependency");
|
@@ -26,14 +34,23 @@ const CssParser = require("./CssParser");
|
|
26
34
|
|
27
35
|
/** @typedef {import("webpack-sources").Source} Source */
|
28
36
|
/** @typedef {import("../../declarations/WebpackOptions").CssExperimentOptions} CssExperimentOptions */
|
37
|
+
/** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
|
29
38
|
/** @typedef {import("../Chunk")} Chunk */
|
39
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
40
|
+
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
41
|
+
/** @typedef {import("../Compilation")} Compilation */
|
30
42
|
/** @typedef {import("../Compiler")} Compiler */
|
31
43
|
/** @typedef {import("../Module")} Module */
|
44
|
+
/** @typedef {import("../util/memoize")} Memoize */
|
32
45
|
|
33
46
|
const getCssLoadingRuntimeModule = memoize(() =>
|
34
47
|
require("./CssLoadingRuntimeModule")
|
35
48
|
);
|
36
49
|
|
50
|
+
/**
|
51
|
+
* @param {string} name name
|
52
|
+
* @returns {{oneOf: [{$ref: string}], definitions: *}} schema
|
53
|
+
*/
|
37
54
|
const getSchema = name => {
|
38
55
|
const { definitions } = require("../../schemas/WebpackOptions.json");
|
39
56
|
return {
|
@@ -59,6 +76,11 @@ const validateParserOptions = createSchemaValidation(
|
|
59
76
|
}
|
60
77
|
);
|
61
78
|
|
79
|
+
/**
|
80
|
+
* @param {string} str string
|
81
|
+
* @param {boolean=} omitOptionalUnderscore if true, optional underscore is not added
|
82
|
+
* @returns {string} escaped string
|
83
|
+
*/
|
62
84
|
const escapeCss = (str, omitOptionalUnderscore) => {
|
63
85
|
const escaped = `${str}`.replace(
|
64
86
|
// cspell:word uffff
|
@@ -125,53 +147,101 @@ class CssModulesPlugin {
|
|
125
147
|
StaticExportsDependency,
|
126
148
|
new StaticExportsDependency.Template()
|
127
149
|
);
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
150
|
+
for (const type of [
|
151
|
+
CSS_MODULE_TYPE,
|
152
|
+
CSS_MODULE_TYPE_GLOBAL,
|
153
|
+
CSS_MODULE_TYPE_MODULE,
|
154
|
+
CSS_MODULE_TYPE_AUTO
|
155
|
+
]) {
|
156
|
+
normalModuleFactory.hooks.createParser
|
157
|
+
.for(type)
|
158
|
+
.tap(plugin, parserOptions => {
|
159
|
+
validateParserOptions(parserOptions);
|
160
|
+
|
161
|
+
switch (type) {
|
162
|
+
case CSS_MODULE_TYPE:
|
163
|
+
case CSS_MODULE_TYPE_AUTO:
|
164
|
+
return new CssParser();
|
165
|
+
case CSS_MODULE_TYPE_GLOBAL:
|
166
|
+
return new CssParser({
|
167
|
+
allowModeSwitch: false
|
168
|
+
});
|
169
|
+
case CSS_MODULE_TYPE_MODULE:
|
170
|
+
return new CssParser({
|
171
|
+
defaultMode: "local"
|
172
|
+
});
|
173
|
+
}
|
174
|
+
});
|
175
|
+
normalModuleFactory.hooks.createGenerator
|
176
|
+
.for(type)
|
177
|
+
.tap(plugin, generatorOptions => {
|
178
|
+
validateGeneratorOptions(generatorOptions);
|
179
|
+
return this._exportsOnly
|
180
|
+
? new CssExportsGenerator()
|
181
|
+
: new CssGenerator();
|
141
182
|
});
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
183
|
+
normalModuleFactory.hooks.createModuleClass
|
184
|
+
.for(type)
|
185
|
+
.tap(plugin, (createData, resolveData) => {
|
186
|
+
if (resolveData.dependencies.length > 0) {
|
187
|
+
// When CSS is imported from CSS there is only one dependency
|
188
|
+
const dependency = resolveData.dependencies[0];
|
189
|
+
|
190
|
+
if (dependency instanceof CssImportDependency) {
|
191
|
+
const parent =
|
192
|
+
/** @type {CssModule} */
|
193
|
+
(compilation.moduleGraph.getParentModule(dependency));
|
194
|
+
|
195
|
+
if (parent instanceof CssModule) {
|
196
|
+
/** @type {import("../CssModule").Inheritance | undefined} */
|
197
|
+
let inheritance;
|
198
|
+
|
199
|
+
if (
|
200
|
+
(parent.cssLayer !== null &&
|
201
|
+
parent.cssLayer !== undefined) ||
|
202
|
+
parent.supports ||
|
203
|
+
parent.media
|
204
|
+
) {
|
205
|
+
if (!inheritance) {
|
206
|
+
inheritance = [];
|
207
|
+
}
|
208
|
+
|
209
|
+
inheritance.push([
|
210
|
+
parent.cssLayer,
|
211
|
+
parent.supports,
|
212
|
+
parent.media
|
213
|
+
]);
|
214
|
+
}
|
215
|
+
|
216
|
+
if (parent.inheritance) {
|
217
|
+
if (!inheritance) {
|
218
|
+
inheritance = [];
|
219
|
+
}
|
220
|
+
|
221
|
+
inheritance.push(...parent.inheritance);
|
222
|
+
}
|
223
|
+
|
224
|
+
return new CssModule({
|
225
|
+
...createData,
|
226
|
+
cssLayer: dependency.layer,
|
227
|
+
supports: dependency.supports,
|
228
|
+
media: dependency.media,
|
229
|
+
inheritance
|
230
|
+
});
|
231
|
+
}
|
232
|
+
|
233
|
+
return new CssModule({
|
234
|
+
...createData,
|
235
|
+
cssLayer: dependency.layer,
|
236
|
+
supports: dependency.supports,
|
237
|
+
media: dependency.media
|
238
|
+
});
|
239
|
+
}
|
240
|
+
}
|
241
|
+
|
242
|
+
return new CssModule(createData);
|
149
243
|
});
|
150
|
-
|
151
|
-
normalModuleFactory.hooks.createGenerator
|
152
|
-
.for("css")
|
153
|
-
.tap(plugin, generatorOptions => {
|
154
|
-
validateGeneratorOptions(generatorOptions);
|
155
|
-
return this._exportsOnly
|
156
|
-
? new CssExportsGenerator()
|
157
|
-
: new CssGenerator();
|
158
|
-
});
|
159
|
-
normalModuleFactory.hooks.createGenerator
|
160
|
-
.for("css/global")
|
161
|
-
.tap(plugin, generatorOptions => {
|
162
|
-
validateGeneratorOptions(generatorOptions);
|
163
|
-
return this._exportsOnly
|
164
|
-
? new CssExportsGenerator()
|
165
|
-
: new CssGenerator();
|
166
|
-
});
|
167
|
-
normalModuleFactory.hooks.createGenerator
|
168
|
-
.for("css/module")
|
169
|
-
.tap(plugin, generatorOptions => {
|
170
|
-
validateGeneratorOptions(generatorOptions);
|
171
|
-
return this._exportsOnly
|
172
|
-
? new CssExportsGenerator()
|
173
|
-
: new CssGenerator();
|
174
|
-
});
|
244
|
+
}
|
175
245
|
const orderedCssModulesPerChunk = new WeakMap();
|
176
246
|
compilation.hooks.afterCodeGeneration.tap("CssModulesPlugin", () => {
|
177
247
|
const { chunkGraph } = compilation;
|
@@ -210,6 +280,7 @@ class CssModulesPlugin {
|
|
210
280
|
|
211
281
|
if (chunk instanceof HotUpdateChunk) return result;
|
212
282
|
|
283
|
+
/** @type {CssModule[] | undefined} */
|
213
284
|
const modules = orderedCssModulesPerChunk.get(chunk);
|
214
285
|
if (modules !== undefined) {
|
215
286
|
result.push({
|
@@ -237,12 +308,28 @@ class CssModulesPlugin {
|
|
237
308
|
}
|
238
309
|
return result;
|
239
310
|
});
|
240
|
-
const
|
311
|
+
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
312
|
+
/**
|
313
|
+
* @param {Chunk} chunk the chunk
|
314
|
+
* @returns {boolean} true, when enabled
|
315
|
+
*/
|
316
|
+
const isEnabledForChunk = chunk => {
|
317
|
+
const options = chunk.getEntryOptions();
|
318
|
+
const chunkLoading =
|
319
|
+
options && options.chunkLoading !== undefined
|
320
|
+
? options.chunkLoading
|
321
|
+
: globalChunkLoading;
|
322
|
+
return chunkLoading === "jsonp";
|
323
|
+
};
|
324
|
+
const onceForChunkSet = new WeakSet();
|
325
|
+
/**
|
326
|
+
* @param {Chunk} chunk chunk to check
|
327
|
+
* @param {Set<string>} set runtime requirements
|
328
|
+
*/
|
241
329
|
const handler = (chunk, set) => {
|
242
|
-
if (
|
243
|
-
|
244
|
-
|
245
|
-
enabledChunks.add(chunk);
|
330
|
+
if (onceForChunkSet.has(chunk)) return;
|
331
|
+
onceForChunkSet.add(chunk);
|
332
|
+
if (!isEnabledForChunk(chunk)) return;
|
246
333
|
|
247
334
|
set.add(RuntimeGlobals.publicPath);
|
248
335
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
@@ -266,9 +353,16 @@ class CssModulesPlugin {
|
|
266
353
|
);
|
267
354
|
}
|
268
355
|
|
356
|
+
/**
|
357
|
+
* @param {Chunk} chunk chunk
|
358
|
+
* @param {Iterable<Module>} modules unordered modules
|
359
|
+
* @param {Compilation} compilation compilation
|
360
|
+
* @returns {Module[]} ordered modules
|
361
|
+
*/
|
269
362
|
getModulesInOrder(chunk, modules, compilation) {
|
270
363
|
if (!modules) return [];
|
271
364
|
|
365
|
+
/** @type {Module[]} */
|
272
366
|
const modulesList = [...modules];
|
273
367
|
|
274
368
|
// Get ordered list of modules per chunk group
|
@@ -282,7 +376,10 @@ class CssModulesPlugin {
|
|
282
376
|
};
|
283
377
|
})
|
284
378
|
.filter(item => item.index !== undefined)
|
285
|
-
.sort(
|
379
|
+
.sort(
|
380
|
+
(a, b) =>
|
381
|
+
/** @type {number} */ (b.index) - /** @type {number} */ (a.index)
|
382
|
+
)
|
286
383
|
.map(item => item.module);
|
287
384
|
|
288
385
|
return { list: sortedModules, set: new Set(sortedModules) };
|
@@ -302,6 +399,7 @@ class CssModulesPlugin {
|
|
302
399
|
|
303
400
|
modulesByChunkGroup.sort(compareModuleLists);
|
304
401
|
|
402
|
+
/** @type {Module[]} */
|
305
403
|
const finalModules = [];
|
306
404
|
|
307
405
|
for (;;) {
|
@@ -311,6 +409,7 @@ class CssModulesPlugin {
|
|
311
409
|
// done, everything empty
|
312
410
|
break;
|
313
411
|
}
|
412
|
+
/** @type {Module} */
|
314
413
|
let selectedModule = list[list.length - 1];
|
315
414
|
let hasFailed = undefined;
|
316
415
|
outer: for (;;) {
|
@@ -336,18 +435,17 @@ class CssModulesPlugin {
|
|
336
435
|
if (compilation) {
|
337
436
|
// TODO print better warning
|
338
437
|
compilation.warnings.push(
|
339
|
-
new
|
340
|
-
`chunk ${
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
)} and ${selectedModule.readableIdentifier(
|
438
|
+
new WebpackError(
|
439
|
+
`chunk ${chunk.name || chunk.id}\nConflicting order between ${
|
440
|
+
/** @type {Module} */
|
441
|
+
(hasFailed).readableIdentifier(compilation.requestShortener)
|
442
|
+
} and ${selectedModule.readableIdentifier(
|
345
443
|
compilation.requestShortener
|
346
444
|
)}`
|
347
445
|
)
|
348
446
|
);
|
349
447
|
}
|
350
|
-
selectedModule = hasFailed;
|
448
|
+
selectedModule = /** @type {Module} */ (hasFailed);
|
351
449
|
}
|
352
450
|
// Insert the selected module into the final modules list
|
353
451
|
finalModules.push(selectedModule);
|
@@ -365,29 +463,50 @@ class CssModulesPlugin {
|
|
365
463
|
return finalModules;
|
366
464
|
}
|
367
465
|
|
466
|
+
/**
|
467
|
+
* @param {Chunk} chunk chunk
|
468
|
+
* @param {ChunkGraph} chunkGraph chunk graph
|
469
|
+
* @param {Compilation} compilation compilation
|
470
|
+
* @returns {Module[]} ordered css modules
|
471
|
+
*/
|
368
472
|
getOrderedChunkCssModules(chunk, chunkGraph, compilation) {
|
369
473
|
return [
|
370
474
|
...this.getModulesInOrder(
|
371
475
|
chunk,
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
476
|
+
/** @type {Iterable<Module>} */
|
477
|
+
(
|
478
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
479
|
+
chunk,
|
480
|
+
"css-import",
|
481
|
+
compareModulesByIdentifier
|
482
|
+
)
|
376
483
|
),
|
377
484
|
compilation
|
378
485
|
),
|
379
486
|
...this.getModulesInOrder(
|
380
487
|
chunk,
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
488
|
+
/** @type {Iterable<Module>} */
|
489
|
+
(
|
490
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
491
|
+
chunk,
|
492
|
+
"css",
|
493
|
+
compareModulesByIdentifier
|
494
|
+
)
|
385
495
|
),
|
386
496
|
compilation
|
387
497
|
)
|
388
498
|
];
|
389
499
|
}
|
390
500
|
|
501
|
+
/**
|
502
|
+
* @param {Object} options options
|
503
|
+
* @param {string | undefined} options.uniqueName unique name
|
504
|
+
* @param {Chunk} options.chunk chunk
|
505
|
+
* @param {ChunkGraph} options.chunkGraph chunk graph
|
506
|
+
* @param {CodeGenerationResults} options.codeGenerationResults code generation results
|
507
|
+
* @param {CssModule[]} options.modules ordered css modules
|
508
|
+
* @returns {Source} generated source
|
509
|
+
*/
|
391
510
|
renderChunk({
|
392
511
|
uniqueName,
|
393
512
|
chunk,
|
@@ -396,21 +515,70 @@ class CssModulesPlugin {
|
|
396
515
|
modules
|
397
516
|
}) {
|
398
517
|
const source = new ConcatSource();
|
518
|
+
/** @type {string[]} */
|
399
519
|
const metaData = [];
|
400
520
|
for (const module of modules) {
|
401
521
|
try {
|
402
522
|
const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
|
403
523
|
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
524
|
+
let moduleSource =
|
525
|
+
/** @type {Source} */
|
526
|
+
(
|
527
|
+
codeGenResult.sources.get("css") ||
|
528
|
+
codeGenResult.sources.get("css-import")
|
529
|
+
);
|
530
|
+
|
531
|
+
let inheritance = [[module.cssLayer, module.supports, module.media]];
|
532
|
+
|
533
|
+
if (module.inheritance) {
|
534
|
+
inheritance.push(...module.inheritance);
|
535
|
+
}
|
536
|
+
|
537
|
+
for (let i = 0; i < inheritance.length; i++) {
|
538
|
+
const layer = inheritance[i][0];
|
539
|
+
const supports = inheritance[i][1];
|
540
|
+
const media = inheritance[i][2];
|
541
|
+
|
542
|
+
if (media) {
|
543
|
+
moduleSource = new ConcatSource(
|
544
|
+
`@media ${media} {\n`,
|
545
|
+
new PrefixSource("\t", moduleSource),
|
546
|
+
"}\n"
|
547
|
+
);
|
548
|
+
}
|
549
|
+
|
550
|
+
if (supports) {
|
551
|
+
moduleSource = new ConcatSource(
|
552
|
+
`@supports (${supports}) {\n`,
|
553
|
+
new PrefixSource("\t", moduleSource),
|
554
|
+
"}\n"
|
555
|
+
);
|
556
|
+
}
|
557
|
+
|
558
|
+
// Layer can be anonymous
|
559
|
+
if (layer !== undefined && layer !== null) {
|
560
|
+
moduleSource = new ConcatSource(
|
561
|
+
`@layer${layer ? ` ${layer}` : ""} {\n`,
|
562
|
+
new PrefixSource("\t", moduleSource),
|
563
|
+
"}\n"
|
564
|
+
);
|
565
|
+
}
|
566
|
+
}
|
567
|
+
|
568
|
+
if (moduleSource) {
|
569
|
+
source.add(moduleSource);
|
409
570
|
source.add("\n");
|
410
571
|
}
|
572
|
+
/** @type {Map<string, string> | undefined} */
|
411
573
|
const exports =
|
412
574
|
codeGenResult.data && codeGenResult.data.get("css-exports");
|
413
|
-
|
575
|
+
let moduleId = chunkGraph.getModuleId(module) + "";
|
576
|
+
|
577
|
+
// When `optimization.moduleIds` is `named` the module id is a path, so we need to normalize it between platforms
|
578
|
+
if (typeof moduleId === "string") {
|
579
|
+
moduleId = moduleId.replace(/\\/g, "/");
|
580
|
+
}
|
581
|
+
|
414
582
|
metaData.push(
|
415
583
|
`${
|
416
584
|
exports
|
@@ -428,7 +596,8 @@ class CssModulesPlugin {
|
|
428
596
|
}${escapeCss(moduleId)}`
|
429
597
|
);
|
430
598
|
} catch (e) {
|
431
|
-
|
599
|
+
/** @type {Error} */
|
600
|
+
(e).message += `\nduring rendering of css ${module.identifier()}`;
|
432
601
|
throw e;
|
433
602
|
}
|
434
603
|
}
|
@@ -441,6 +610,11 @@ class CssModulesPlugin {
|
|
441
610
|
return source;
|
442
611
|
}
|
443
612
|
|
613
|
+
/**
|
614
|
+
* @param {Chunk} chunk chunk
|
615
|
+
* @param {OutputOptions} outputOptions output options
|
616
|
+
* @returns {Chunk["cssFilenameTemplate"] | OutputOptions["cssFilename"] | OutputOptions["cssChunkFilename"]} used filename template
|
617
|
+
*/
|
444
618
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
445
619
|
if (chunk.cssFilenameTemplate) {
|
446
620
|
return chunk.cssFilenameTemplate;
|
@@ -451,6 +625,11 @@ class CssModulesPlugin {
|
|
451
625
|
}
|
452
626
|
}
|
453
627
|
|
628
|
+
/**
|
629
|
+
* @param {Chunk} chunk chunk
|
630
|
+
* @param {ChunkGraph} chunkGraph chunk graph
|
631
|
+
* @returns {boolean} true, when the chunk has css
|
632
|
+
*/
|
454
633
|
static chunkHasCss(chunk, chunkGraph) {
|
455
634
|
return (
|
456
635
|
!!chunkGraph.getChunkModulesIterableBySourceType(chunk, "css") ||
|