@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { SyncHook, SyncWaterfallHook } = require("tapable");
|
|
8
|
+
const { SyncBailHook, SyncHook, SyncWaterfallHook } = require("tapable");
|
|
9
9
|
const {
|
|
10
10
|
CachedSource,
|
|
11
11
|
ConcatSource,
|
|
@@ -13,9 +13,7 @@ const {
|
|
|
13
13
|
RawSource,
|
|
14
14
|
ReplaceSource
|
|
15
15
|
} = require("webpack-sources");
|
|
16
|
-
|
|
17
|
-
const CssModule = require("../CssModule");
|
|
18
|
-
const { tryRunOrWebpackError } = require("../HookWebpackError");
|
|
16
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
19
17
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
|
20
18
|
const { CSS_IMPORT_TYPE, CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
21
19
|
const {
|
|
@@ -27,25 +25,32 @@ const {
|
|
|
27
25
|
const NormalModule = require("../NormalModule");
|
|
28
26
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
29
27
|
const Template = require("../Template");
|
|
30
|
-
const WebpackError = require("../WebpackError");
|
|
31
28
|
const CssIcssExportDependency = require("../dependencies/CssIcssExportDependency");
|
|
32
29
|
const CssIcssImportDependency = require("../dependencies/CssIcssImportDependency");
|
|
33
30
|
const CssIcssSymbolDependency = require("../dependencies/CssIcssSymbolDependency");
|
|
34
31
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
35
32
|
const CssUrlDependency = require("../dependencies/CssUrlDependency");
|
|
36
33
|
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
|
34
|
+
const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
|
|
35
|
+
const WebpackError = require("../errors/WebpackError");
|
|
37
36
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
37
|
+
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
38
38
|
const { compareModulesByFullName } = require("../util/comparators");
|
|
39
39
|
const createHash = require("../util/createHash");
|
|
40
|
+
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
40
41
|
const { getUndoPath } = require("../util/identifier");
|
|
42
|
+
const implicitTypeLoaderFallback = require("../util/implicitTypeLoaderFallback");
|
|
41
43
|
const memoize = require("../util/memoize");
|
|
42
|
-
const
|
|
44
|
+
const { digestNonNumericOnlyWithFull } = require("../util/nonNumericOnlyHash");
|
|
45
|
+
const {
|
|
46
|
+
PUBLIC_PATH_AUTO,
|
|
47
|
+
walkFullHashPlaceholders
|
|
48
|
+
} = require("../util/publicPathPlaceholder");
|
|
43
49
|
const removeBOM = require("../util/removeBOM");
|
|
44
50
|
const CssGenerator = require("./CssGenerator");
|
|
51
|
+
const CssModule = require("./CssModule");
|
|
45
52
|
const CssParser = require("./CssParser");
|
|
46
53
|
|
|
47
|
-
const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
48
|
-
|
|
49
54
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
50
55
|
/** @typedef {import("../config/defaults").OutputNormalizedWithDefaults} OutputOptions */
|
|
51
56
|
/** @typedef {import("../Chunk")} Chunk */
|
|
@@ -53,17 +58,19 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
53
58
|
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
|
54
59
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
55
60
|
/** @typedef {import("../Compiler")} Compiler */
|
|
56
|
-
/** @typedef {import("
|
|
57
|
-
/** @typedef {import("
|
|
61
|
+
/** @typedef {import("./CssModule").Inheritance} Inheritance */
|
|
62
|
+
/** @typedef {import("./CssModule").CssModuleCreateData} CssModuleCreateData */
|
|
58
63
|
/** @typedef {import("../Module")} Module */
|
|
59
64
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
65
|
+
/** @typedef {import("./CssModule").CssModuleBuildInfo} CssModuleBuildInfo */
|
|
60
66
|
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
61
67
|
/** @typedef {import("../Template").RuntimeTemplate} RuntimeTemplate */
|
|
62
|
-
/** @typedef {import("../
|
|
68
|
+
/** @typedef {import("../Chunk").ChunkFilenameTemplate} ChunkFilenameTemplate */
|
|
63
69
|
/** @typedef {import("../util/Hash")} Hash */
|
|
64
70
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
65
71
|
|
|
66
72
|
/**
|
|
73
|
+
* Defines the render context type used by this module.
|
|
67
74
|
* @typedef {object} RenderContext
|
|
68
75
|
* @property {Chunk} chunk the chunk
|
|
69
76
|
* @property {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -71,29 +78,28 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
71
78
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
72
79
|
* @property {string} uniqueName the unique name
|
|
73
80
|
* @property {string} undoPath undo path to css file
|
|
81
|
+
* @property {string=} hash compilation hash
|
|
74
82
|
* @property {CssModule[]} modules modules
|
|
75
83
|
*/
|
|
76
84
|
|
|
77
85
|
/**
|
|
86
|
+
* Defines the chunk render context type used by this module.
|
|
78
87
|
* @typedef {object} ChunkRenderContext
|
|
79
88
|
* @property {Chunk=} chunk the chunk
|
|
80
89
|
* @property {ChunkGraph=} chunkGraph the chunk graph
|
|
81
90
|
* @property {CodeGenerationResults=} codeGenerationResults results of code generation
|
|
82
91
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
83
92
|
* @property {string} undoPath undo path to css file
|
|
93
|
+
* @property {string=} hash compilation hash
|
|
84
94
|
* @property {WeakMap<Source, ModuleFactoryCacheEntry>} moduleFactoryCache moduleFactoryCache
|
|
85
95
|
* @property {Source} moduleSourceContent content
|
|
86
96
|
*/
|
|
87
97
|
|
|
88
98
|
/**
|
|
89
|
-
*
|
|
90
|
-
* @property {SyncWaterfallHook<[Source, Module, ChunkRenderContext]>} renderModulePackage
|
|
91
|
-
* @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
|
|
92
|
-
*/
|
|
93
|
-
|
|
94
|
-
/**
|
|
99
|
+
* Defines the module factory cache entry type used by this module.
|
|
95
100
|
* @typedef {object} ModuleFactoryCacheEntry
|
|
96
101
|
* @property {string} undoPath - The undo path to the CSS file
|
|
102
|
+
* @property {string | undefined} hash - The compilation hash
|
|
97
103
|
* @property {Inheritance} inheritance - The inheritance chain
|
|
98
104
|
* @property {CachedSource} source - The cached source
|
|
99
105
|
*/
|
|
@@ -101,14 +107,87 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
101
107
|
const getCssLoadingRuntimeModule = memoize(() =>
|
|
102
108
|
require("./CssLoadingRuntimeModule")
|
|
103
109
|
);
|
|
104
|
-
const getCssMergeStyleSheetsRuntimeModule = memoize(() =>
|
|
105
|
-
require("./CssMergeStyleSheetsRuntimeModule")
|
|
106
|
-
);
|
|
107
110
|
const getCssInjectStyleRuntimeModule = memoize(() =>
|
|
108
111
|
require("./CssInjectStyleRuntimeModule")
|
|
109
112
|
);
|
|
110
113
|
|
|
111
114
|
/**
|
|
115
|
+
* @typedef {object} PublicPathPlaceholderPlan
|
|
116
|
+
* @property {number[]} autos start offsets of each `PUBLIC_PATH_AUTO` placeholder
|
|
117
|
+
* @property {{ start: number, end: number, length: number }[]} hashes `[start, end)` ranges of each `PUBLIC_PATH_FULL_HASH` placeholder and its requested hash length
|
|
118
|
+
*/
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Public-path placeholder offsets are invariant for a given module source —
|
|
122
|
+
* they don't depend on `undoPath`/`hash`/`inheritance`/runtime — so scan once
|
|
123
|
+
* and reuse across renders instead of re-materializing and re-scanning the
|
|
124
|
+
* source on every cache miss. Weakly keyed so entries release with the source.
|
|
125
|
+
* @type {WeakMap<Source, PublicPathPlaceholderPlan>}
|
|
126
|
+
*/
|
|
127
|
+
const publicPathPlaceholderPlans = new WeakMap();
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Memoized inheritance chain per module, revalidated against its source
|
|
131
|
+
* fields — `updateCacheModule` reassigns them on watch rebuilds.
|
|
132
|
+
* @type {WeakMap<CssModule, { cssLayer: CssModule["cssLayer"], supports: CssModule["supports"], media: CssModule["media"], inheritance: CssModule["inheritance"], chain: Inheritance }>}
|
|
133
|
+
*/
|
|
134
|
+
const moduleInheritanceCache = new WeakMap();
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Gets the memoized inheritance chain of a css module.
|
|
138
|
+
* @param {CssModule} module css module
|
|
139
|
+
* @returns {Inheritance} inheritance chain including the module's own entry
|
|
140
|
+
*/
|
|
141
|
+
const getModuleInheritance = (module) => {
|
|
142
|
+
const entry = moduleInheritanceCache.get(module);
|
|
143
|
+
if (
|
|
144
|
+
entry !== undefined &&
|
|
145
|
+
entry.cssLayer === module.cssLayer &&
|
|
146
|
+
entry.supports === module.supports &&
|
|
147
|
+
entry.media === module.media &&
|
|
148
|
+
entry.inheritance === module.inheritance
|
|
149
|
+
) {
|
|
150
|
+
return entry.chain;
|
|
151
|
+
}
|
|
152
|
+
/** @type {Inheritance} */
|
|
153
|
+
const chain = [[module.cssLayer, module.supports, module.media]];
|
|
154
|
+
if (module.inheritance) chain.push(...module.inheritance);
|
|
155
|
+
moduleInheritanceCache.set(module, {
|
|
156
|
+
cssLayer: module.cssLayer,
|
|
157
|
+
supports: module.supports,
|
|
158
|
+
media: module.media,
|
|
159
|
+
inheritance: module.inheritance,
|
|
160
|
+
chain
|
|
161
|
+
});
|
|
162
|
+
return chain;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Locate the public-path placeholders in a materialized module source.
|
|
167
|
+
* @param {string} content materialized module source
|
|
168
|
+
* @returns {PublicPathPlaceholderPlan} placeholder offsets
|
|
169
|
+
*/
|
|
170
|
+
const computePublicPathPlaceholderPlan = (content) => {
|
|
171
|
+
/** @type {number[]} */
|
|
172
|
+
const autos = [];
|
|
173
|
+
const autoLen = PUBLIC_PATH_AUTO.length;
|
|
174
|
+
for (
|
|
175
|
+
let idx = content.indexOf(PUBLIC_PATH_AUTO);
|
|
176
|
+
idx !== -1;
|
|
177
|
+
idx = content.indexOf(PUBLIC_PATH_AUTO, idx + autoLen)
|
|
178
|
+
) {
|
|
179
|
+
autos.push(idx);
|
|
180
|
+
}
|
|
181
|
+
/** @type {{ start: number, end: number, length: number }[]} */
|
|
182
|
+
const hashes = [];
|
|
183
|
+
walkFullHashPlaceholders(content, (start, end, length) => {
|
|
184
|
+
hashes.push({ start, end, length });
|
|
185
|
+
});
|
|
186
|
+
return { autos, hashes };
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Returns ], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema.
|
|
112
191
|
* @param {string} name name
|
|
113
192
|
* @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema
|
|
114
193
|
*/
|
|
@@ -131,51 +210,63 @@ const generatorValidationOptions = {
|
|
|
131
210
|
baseDataPath: "generator"
|
|
132
211
|
};
|
|
133
212
|
|
|
134
|
-
/** @type {WeakMap<Compilation, CompilationHooks>} */
|
|
135
|
-
const compilationHooksMap = new WeakMap();
|
|
136
|
-
|
|
137
213
|
const PLUGIN_NAME = "CssModulesPlugin";
|
|
138
214
|
|
|
139
|
-
|
|
215
|
+
const createCompilationHooks = () => ({
|
|
140
216
|
/**
|
|
141
|
-
* @
|
|
142
|
-
* @
|
|
217
|
+
* @type {SyncWaterfallHook<[Source, Module, ChunkRenderContext]>}
|
|
218
|
+
* @since 5.94.0
|
|
143
219
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
return hooks;
|
|
163
|
-
}
|
|
220
|
+
renderModulePackage: new SyncWaterfallHook([
|
|
221
|
+
"source",
|
|
222
|
+
"module",
|
|
223
|
+
"renderContext"
|
|
224
|
+
]),
|
|
225
|
+
/**
|
|
226
|
+
* @type {SyncHook<[Chunk, Hash, ChunkHashContext]>}
|
|
227
|
+
* @since 5.94.0
|
|
228
|
+
*/
|
|
229
|
+
chunkHash: new SyncHook(["chunk", "hash", "context"]),
|
|
230
|
+
/**
|
|
231
|
+
* Called for each CSS source type (CSS_IMPORT_TYPE, CSS_TYPE) with the chunk's modules pre-sorted by full module name; return an ordered `Module[]` to override the default import-order topological sort, or return `undefined` to keep the default.
|
|
232
|
+
* @type {SyncBailHook<[Chunk, Module[], Compilation], Module[] | undefined | void>}
|
|
233
|
+
* @since 5.107.0
|
|
234
|
+
*/
|
|
235
|
+
orderModules: new SyncBailHook(["chunk", "modules", "compilation"])
|
|
236
|
+
});
|
|
164
237
|
|
|
238
|
+
/**
|
|
239
|
+
* Defines the compilation hooks type used by this module.
|
|
240
|
+
* @typedef {ReturnType<typeof createCompilationHooks>} CompilationHooks
|
|
241
|
+
*/
|
|
242
|
+
|
|
243
|
+
class CssModulesPlugin {
|
|
165
244
|
constructor() {
|
|
166
245
|
/** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
|
|
167
246
|
this._moduleFactoryCache = new WeakMap();
|
|
168
247
|
}
|
|
169
248
|
|
|
170
249
|
/**
|
|
171
|
-
*
|
|
250
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
172
251
|
* @param {Compiler} compiler the compiler instance
|
|
173
252
|
* @returns {void}
|
|
174
253
|
*/
|
|
175
254
|
apply(compiler) {
|
|
255
|
+
// `"auto"` marks implicit enablement (no user rule for CSS files) — see
|
|
256
|
+
// `applyExperimentsDefaults`. Only then loaders win over the built-in type.
|
|
257
|
+
// TODO webpack 6: css defaults to `true`, drop this implicit-only fallback.
|
|
258
|
+
const implicitlyEnabled = compiler.options.experiments.css === "auto";
|
|
176
259
|
compiler.hooks.compilation.tap(
|
|
177
260
|
PLUGIN_NAME,
|
|
178
261
|
(compilation, { normalModuleFactory }) => {
|
|
262
|
+
if (implicitlyEnabled) {
|
|
263
|
+
implicitTypeLoaderFallback(
|
|
264
|
+
normalModuleFactory,
|
|
265
|
+
PLUGIN_NAME,
|
|
266
|
+
/\.css$/i,
|
|
267
|
+
CSS_MODULE_TYPE_AUTO
|
|
268
|
+
);
|
|
269
|
+
}
|
|
179
270
|
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
180
271
|
compilation.dependencyFactories.set(
|
|
181
272
|
CssImportDependency,
|
|
@@ -255,11 +346,11 @@ class CssModulesPlugin {
|
|
|
255
346
|
case CSS_MODULE_TYPE_MODULE: {
|
|
256
347
|
defaultMode = "local";
|
|
257
348
|
compiler.validate(
|
|
258
|
-
() => getSchema("
|
|
349
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
259
350
|
parserOptions,
|
|
260
351
|
parserValidationOptions,
|
|
261
352
|
(options) =>
|
|
262
|
-
require("../../schemas/plugins/css/
|
|
353
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
263
354
|
options
|
|
264
355
|
)
|
|
265
356
|
);
|
|
@@ -268,11 +359,11 @@ class CssModulesPlugin {
|
|
|
268
359
|
case CSS_MODULE_TYPE_AUTO: {
|
|
269
360
|
defaultMode = "auto";
|
|
270
361
|
compiler.validate(
|
|
271
|
-
() => getSchema("
|
|
362
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
272
363
|
parserOptions,
|
|
273
364
|
parserValidationOptions,
|
|
274
365
|
(options) =>
|
|
275
|
-
require("../../schemas/plugins/css/
|
|
366
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
276
367
|
options
|
|
277
368
|
)
|
|
278
369
|
);
|
|
@@ -354,71 +445,28 @@ class CssModulesPlugin {
|
|
|
354
445
|
const exportType =
|
|
355
446
|
/** @type {CssParser} */
|
|
356
447
|
(createData.parser).options.exportType;
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
if (!inheritance) {
|
|
376
|
-
inheritance = [];
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
inheritance.push([
|
|
380
|
-
parent.cssLayer,
|
|
381
|
-
parent.supports,
|
|
382
|
-
parent.media
|
|
383
|
-
]);
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
if (parent.inheritance) {
|
|
387
|
-
if (!inheritance) {
|
|
388
|
-
inheritance = [];
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
inheritance.push(...parent.inheritance);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
return new CssModule(
|
|
395
|
-
/** @type {CSSModuleCreateData} */
|
|
396
|
-
({
|
|
397
|
-
...createData,
|
|
398
|
-
cssLayer: dependency.layer,
|
|
399
|
-
supports: dependency.supports,
|
|
400
|
-
media: dependency.media,
|
|
401
|
-
inheritance,
|
|
402
|
-
exportType: exportType || parent.exportType
|
|
403
|
-
})
|
|
404
|
-
);
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
return new CssModule(
|
|
408
|
-
/** @type {CSSModuleCreateData} */
|
|
409
|
-
({
|
|
410
|
-
...createData,
|
|
411
|
-
cssLayer: dependency.layer,
|
|
412
|
-
supports: dependency.supports,
|
|
413
|
-
media: dependency.media,
|
|
414
|
-
exportType
|
|
415
|
-
})
|
|
416
|
-
);
|
|
417
|
-
}
|
|
448
|
+
// When CSS is imported from CSS there is only one dependency
|
|
449
|
+
const dependency =
|
|
450
|
+
resolveData.dependencies.length > 0
|
|
451
|
+
? resolveData.dependencies[0]
|
|
452
|
+
: undefined;
|
|
453
|
+
|
|
454
|
+
if (dependency instanceof CssImportDependency) {
|
|
455
|
+
return new CssModule(
|
|
456
|
+
/** @type {CssModuleCreateData} */
|
|
457
|
+
({
|
|
458
|
+
...createData,
|
|
459
|
+
cssLayer: dependency.layer,
|
|
460
|
+
supports: dependency.supports,
|
|
461
|
+
media: dependency.media,
|
|
462
|
+
inheritance: dependency.inheritance,
|
|
463
|
+
exportType: dependency.exportType || exportType
|
|
464
|
+
})
|
|
465
|
+
);
|
|
418
466
|
}
|
|
419
467
|
|
|
420
468
|
return new CssModule(
|
|
421
|
-
/** @type {
|
|
469
|
+
/** @type {CssModuleCreateData} */
|
|
422
470
|
(
|
|
423
471
|
/** @type {unknown} */ ({
|
|
424
472
|
...createData,
|
|
@@ -444,45 +492,78 @@ class CssModulesPlugin {
|
|
|
444
492
|
|
|
445
493
|
JavascriptModulesPlugin.getCompilationHooks(
|
|
446
494
|
compilation
|
|
447
|
-
).renderModuleContent.tap(PLUGIN_NAME, (source, module) => {
|
|
448
|
-
|
|
449
|
-
|
|
495
|
+
).renderModuleContent.tap(PLUGIN_NAME, (source, module, ctx) => {
|
|
496
|
+
const injectCssStylesVar =
|
|
497
|
+
module instanceof ConcatenatedModule &&
|
|
498
|
+
module.modules.find(
|
|
499
|
+
(m) =>
|
|
500
|
+
m instanceof CssModule &&
|
|
501
|
+
m.exportType === "style" &&
|
|
502
|
+
!(/** @type {CssGenerator} */ (m.generator)._exportsOnly)
|
|
503
|
+
);
|
|
504
|
+
const injectHMRCode =
|
|
505
|
+
(module instanceof CssModule && module.hot) ||
|
|
506
|
+
(module instanceof ConcatenatedModule &&
|
|
507
|
+
module.rootModule instanceof CssModule &&
|
|
508
|
+
module.rootModule.hot);
|
|
509
|
+
|
|
510
|
+
if (injectCssStylesVar) {
|
|
511
|
+
source = new ConcatSource(
|
|
512
|
+
"var __webpack_css_styles__ = [];",
|
|
513
|
+
"\n",
|
|
514
|
+
source
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
if (injectHMRCode) {
|
|
518
|
+
const currentModule = /** @type {CssModule} */ (
|
|
519
|
+
module instanceof ConcatenatedModule ? module.rootModule : module
|
|
520
|
+
);
|
|
521
|
+
const exportType = currentModule.exportType || "link";
|
|
450
522
|
// When exportType !== "link", modules behave like JavaScript modules
|
|
451
|
-
if (
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
523
|
+
if (["link", "style"].includes(exportType)) {
|
|
524
|
+
// For exportType === "link", we can optimize with self-acceptance
|
|
525
|
+
const cssData = /** @type {CssModuleBuildInfo} */ (
|
|
526
|
+
module.buildInfo
|
|
527
|
+
).cssData;
|
|
528
|
+
if (!cssData) {
|
|
529
|
+
return source;
|
|
530
|
+
}
|
|
531
|
+
const exports = cssData.exports;
|
|
532
|
+
/** @type {Record<string, string>} */
|
|
533
|
+
const exportsObj = {};
|
|
534
|
+
for (const [key, value] of exports) {
|
|
535
|
+
exportsObj[key] = value;
|
|
536
|
+
}
|
|
537
|
+
const stringifiedExports = JSON.stringify(
|
|
538
|
+
JSON.stringify(exportsObj)
|
|
539
|
+
);
|
|
540
|
+
|
|
541
|
+
const hmrCode = Template.asString([
|
|
542
|
+
"",
|
|
543
|
+
`var __webpack_css_exports__ = ${stringifiedExports};`,
|
|
544
|
+
"// only invalidate when locals change",
|
|
545
|
+
`if (${ctx.runtimeTemplate.optionalChaining("module.hot.data", "__webpack_css_exports__")} && module.hot.data.__webpack_css_exports__ != __webpack_css_exports__) {`,
|
|
546
|
+
Template.indent("module.hot.invalidate();"),
|
|
547
|
+
"} else {",
|
|
548
|
+
Template.indent("module.hot.accept();"),
|
|
549
|
+
"}",
|
|
550
|
+
"module.hot.dispose(function(data) {",
|
|
551
|
+
Template.indent([
|
|
552
|
+
"data.__webpack_css_exports__ = __webpack_css_exports__;"
|
|
553
|
+
]),
|
|
554
|
+
"});"
|
|
555
|
+
]);
|
|
556
|
+
|
|
557
|
+
source = new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
464
558
|
}
|
|
465
|
-
|
|
466
|
-
|
|
559
|
+
}
|
|
560
|
+
if (injectCssStylesVar) {
|
|
561
|
+
/** @type {ConcatSource} */
|
|
562
|
+
(source).add(
|
|
563
|
+
"for (let i = 0; i < __webpack_css_styles__.length; i++) {\n" +
|
|
564
|
+
`${RuntimeGlobals.cssInjectStyle}(__webpack_css_styles__[i][0], __webpack_css_styles__[i][1]);\n` +
|
|
565
|
+
"}"
|
|
467
566
|
);
|
|
468
|
-
|
|
469
|
-
const hmrCode = Template.asString([
|
|
470
|
-
"",
|
|
471
|
-
`var __webpack_css_exports__ = ${stringifiedExports};`,
|
|
472
|
-
"// only invalidate when locals change",
|
|
473
|
-
"if (module.hot.data && module.hot.data.__webpack_css_exports__ && module.hot.data.__webpack_css_exports__ != __webpack_css_exports__) {",
|
|
474
|
-
Template.indent("module.hot.invalidate();"),
|
|
475
|
-
"} else {",
|
|
476
|
-
Template.indent("module.hot.accept();"),
|
|
477
|
-
"}",
|
|
478
|
-
"module.hot.dispose(function(data) {",
|
|
479
|
-
Template.indent([
|
|
480
|
-
"data.__webpack_css_exports__ = __webpack_css_exports__;"
|
|
481
|
-
]),
|
|
482
|
-
"});"
|
|
483
|
-
]);
|
|
484
|
-
|
|
485
|
-
return new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
486
567
|
}
|
|
487
568
|
|
|
488
569
|
return source;
|
|
@@ -532,8 +613,8 @@ class CssModulesPlugin {
|
|
|
532
613
|
hash.update(chunkGraph.getModuleHash(module, chunk.runtime));
|
|
533
614
|
}
|
|
534
615
|
}
|
|
535
|
-
|
|
536
|
-
|
|
616
|
+
[chunk.contentHash.css, chunk.contentHashFull.css] =
|
|
617
|
+
digestNonNumericOnlyWithFull(hash, hashDigest, hashDigestLength);
|
|
537
618
|
});
|
|
538
619
|
compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
|
|
539
620
|
const { chunkGraph } = compilation;
|
|
@@ -571,6 +652,7 @@ class CssModulesPlugin {
|
|
|
571
652
|
codeGenerationResults,
|
|
572
653
|
uniqueName: compilation.outputOptions.uniqueName,
|
|
573
654
|
undoPath,
|
|
655
|
+
hash,
|
|
574
656
|
modules,
|
|
575
657
|
runtimeTemplate
|
|
576
658
|
},
|
|
@@ -586,6 +668,7 @@ class CssModulesPlugin {
|
|
|
586
668
|
});
|
|
587
669
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
|
588
670
|
/**
|
|
671
|
+
* Checks whether this css modules plugin is enabled for chunk.
|
|
589
672
|
* @param {Chunk} chunk the chunk
|
|
590
673
|
* @returns {boolean} true, when enabled
|
|
591
674
|
*/
|
|
@@ -600,6 +683,7 @@ class CssModulesPlugin {
|
|
|
600
683
|
/** @type {WeakSet<Chunk>} */
|
|
601
684
|
const onceForChunkSet = new WeakSet();
|
|
602
685
|
/**
|
|
686
|
+
* Handles the hook callback for this code path.
|
|
603
687
|
* @param {Chunk} chunk chunk to check
|
|
604
688
|
* @param {RuntimeRequirements} set runtime requirements
|
|
605
689
|
*/
|
|
@@ -655,20 +739,11 @@ class CssModulesPlugin {
|
|
|
655
739
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
|
656
740
|
});
|
|
657
741
|
|
|
658
|
-
compilation.hooks.runtimeRequirementInTree
|
|
659
|
-
.for(RuntimeGlobals.cssMergeStyleSheets)
|
|
660
|
-
.tap(PLUGIN_NAME, (chunk) => {
|
|
661
|
-
const CssMergeStyleSheetsRuntimeModule =
|
|
662
|
-
getCssMergeStyleSheetsRuntimeModule();
|
|
663
|
-
compilation.addRuntimeModule(
|
|
664
|
-
chunk,
|
|
665
|
-
new CssMergeStyleSheetsRuntimeModule()
|
|
666
|
-
);
|
|
667
|
-
});
|
|
668
|
-
|
|
669
742
|
compilation.hooks.runtimeRequirementInTree
|
|
670
743
|
.for(RuntimeGlobals.cssInjectStyle)
|
|
671
744
|
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
745
|
+
// Same as above: namespace stub is enough.
|
|
746
|
+
set.add(RuntimeGlobals.requireScope);
|
|
672
747
|
const CssInjectStyleRuntimeModule =
|
|
673
748
|
getCssInjectStyleRuntimeModule();
|
|
674
749
|
compilation.addRuntimeModule(
|
|
@@ -681,6 +756,7 @@ class CssModulesPlugin {
|
|
|
681
756
|
}
|
|
682
757
|
|
|
683
758
|
/**
|
|
759
|
+
* Gets modules in order.
|
|
684
760
|
* @param {Chunk} chunk chunk
|
|
685
761
|
* @param {Iterable<Module> | undefined} modules unordered modules
|
|
686
762
|
* @param {Compilation} compilation compilation
|
|
@@ -722,6 +798,7 @@ class CssModulesPlugin {
|
|
|
722
798
|
);
|
|
723
799
|
|
|
724
800
|
/**
|
|
801
|
+
* Compares module lists.
|
|
725
802
|
* @param {{ list: Module[] }} a a
|
|
726
803
|
* @param {{ list: Module[] }} b b
|
|
727
804
|
* @returns {-1 | 0 | 1} result
|
|
@@ -826,81 +903,138 @@ class CssModulesPlugin {
|
|
|
826
903
|
}
|
|
827
904
|
|
|
828
905
|
/**
|
|
906
|
+
* Gets ordered chunk css modules.
|
|
829
907
|
* @param {Chunk} chunk chunk
|
|
830
908
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
831
909
|
* @param {Compilation} compilation compilation
|
|
832
910
|
* @returns {CssModule[]} ordered css modules
|
|
833
911
|
*/
|
|
834
912
|
getOrderedChunkCssModules(chunk, chunkGraph, compilation) {
|
|
835
|
-
|
|
836
|
-
|
|
913
|
+
/** @type {string | undefined} */
|
|
914
|
+
let charset;
|
|
915
|
+
|
|
916
|
+
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
917
|
+
|
|
918
|
+
/**
|
|
919
|
+
* @param {Iterable<Module> | undefined} iter modules pre-sorted by full module name
|
|
920
|
+
* @returns {Module[]} ordered modules
|
|
921
|
+
*/
|
|
922
|
+
const orderModules = (iter) => {
|
|
923
|
+
const modules = iter ? [...iter] : [];
|
|
924
|
+
const result = hooks.orderModules.call(chunk, modules, compilation);
|
|
925
|
+
if (result !== undefined) return result;
|
|
926
|
+
return this.getModulesInOrder(chunk, modules, compilation);
|
|
927
|
+
};
|
|
928
|
+
|
|
929
|
+
const comparator = compareModulesByFullName(compilation.compiler);
|
|
930
|
+
const importModules = orderModules(
|
|
931
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
837
932
|
chunk,
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
),
|
|
845
|
-
...this.getModulesInOrder(
|
|
933
|
+
CSS_IMPORT_TYPE,
|
|
934
|
+
comparator
|
|
935
|
+
)
|
|
936
|
+
);
|
|
937
|
+
const cssModules = orderModules(
|
|
938
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
846
939
|
chunk,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
CSS_TYPE,
|
|
850
|
-
compareModulesByFullName(compilation.compiler)
|
|
851
|
-
),
|
|
852
|
-
compilation
|
|
940
|
+
CSS_TYPE,
|
|
941
|
+
comparator
|
|
853
942
|
)
|
|
854
|
-
|
|
943
|
+
);
|
|
944
|
+
for (const module of cssModules) {
|
|
945
|
+
if (
|
|
946
|
+
typeof (
|
|
947
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
948
|
+
) !== "undefined"
|
|
949
|
+
) {
|
|
950
|
+
if (
|
|
951
|
+
typeof charset !== "undefined" &&
|
|
952
|
+
charset !==
|
|
953
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
954
|
+
) {
|
|
955
|
+
const err = new WebpackError(
|
|
956
|
+
`Conflicting @charset at-rules detected: the module ${module.readableIdentifier(
|
|
957
|
+
compilation.requestShortener
|
|
958
|
+
)} (in chunk ${chunk.name || chunk.id}) specifies "${
|
|
959
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
960
|
+
}", but "${charset}" was expected, all modules must use the same character set`
|
|
961
|
+
);
|
|
962
|
+
|
|
963
|
+
err.chunk = chunk;
|
|
964
|
+
err.module = module;
|
|
965
|
+
err.hideStack = true;
|
|
966
|
+
|
|
967
|
+
compilation.warnings.push(err);
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
if (typeof charset === "undefined") {
|
|
971
|
+
charset = /** @type {CssModuleBuildInfo} */ (module.buildInfo)
|
|
972
|
+
.charset;
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
return /** @type {CssModule[]} */ ([...importModules, ...cssModules]);
|
|
855
978
|
}
|
|
856
979
|
|
|
857
980
|
/**
|
|
981
|
+
* Renders css module source.
|
|
858
982
|
* @param {CssModule} module css module
|
|
859
983
|
* @param {ChunkRenderContext} renderContext options object
|
|
860
984
|
* @param {CompilationHooks} hooks hooks
|
|
861
985
|
* @returns {Source | null} css module source
|
|
862
986
|
*/
|
|
863
987
|
static renderModule(module, renderContext, hooks) {
|
|
864
|
-
const { undoPath, moduleFactoryCache, moduleSourceContent } =
|
|
988
|
+
const { undoPath, hash, moduleFactoryCache, moduleSourceContent } =
|
|
989
|
+
renderContext;
|
|
865
990
|
const cacheEntry = moduleFactoryCache.get(moduleSourceContent);
|
|
866
991
|
|
|
867
|
-
|
|
868
|
-
const inheritance = [[module.cssLayer, module.supports, module.media]];
|
|
869
|
-
if (module.inheritance) {
|
|
870
|
-
inheritance.push(...module.inheritance);
|
|
871
|
-
}
|
|
992
|
+
const inheritance = getModuleInheritance(module);
|
|
872
993
|
|
|
873
994
|
/** @type {CachedSource} */
|
|
874
995
|
let source;
|
|
875
996
|
if (
|
|
876
997
|
cacheEntry &&
|
|
877
998
|
cacheEntry.undoPath === undoPath &&
|
|
878
|
-
cacheEntry.
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
if (Array.isArray(item)) {
|
|
882
|
-
return layer === item[0] && supports === item[1] && media === item[2];
|
|
883
|
-
}
|
|
884
|
-
return false;
|
|
885
|
-
})
|
|
999
|
+
cacheEntry.hash === hash &&
|
|
1000
|
+
// Memoized per module, so identity implies equal entries.
|
|
1001
|
+
cacheEntry.inheritance === inheritance
|
|
886
1002
|
) {
|
|
887
1003
|
source = cacheEntry.source;
|
|
888
1004
|
} else {
|
|
889
1005
|
if (!moduleSourceContent) return null;
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
(
|
|
893
|
-
|
|
894
|
-
/** @type {Source} */
|
|
895
|
-
let moduleSource = new ReplaceSource(moduleSourceContent);
|
|
896
|
-
/** @type {null | RegExpExecArray} */
|
|
897
|
-
let match;
|
|
898
|
-
while ((match = publicPathAutoRegex.exec(moduleSourceCode))) {
|
|
899
|
-
/** @type {ReplaceSource} */ (moduleSource).replace(
|
|
900
|
-
match.index,
|
|
901
|
-
match.index + match[0].length - 1,
|
|
902
|
-
undoPath
|
|
1006
|
+
let plan = publicPathPlaceholderPlans.get(moduleSourceContent);
|
|
1007
|
+
if (plan === undefined) {
|
|
1008
|
+
plan = computePublicPathPlaceholderPlan(
|
|
1009
|
+
/** @type {string} */ (moduleSourceContent.source())
|
|
903
1010
|
);
|
|
1011
|
+
publicPathPlaceholderPlans.set(moduleSourceContent, plan);
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
/** @type {Source} */
|
|
1015
|
+
let moduleSource = moduleSourceContent;
|
|
1016
|
+
|
|
1017
|
+
// Apply placeholder substitutions only when present; the common
|
|
1018
|
+
// (no-placeholder) case skips the ReplaceSource wrapper entirely.
|
|
1019
|
+
if (plan.autos.length > 0 || (hash && plan.hashes.length > 0)) {
|
|
1020
|
+
const replaceSource = new ReplaceSource(moduleSourceContent);
|
|
1021
|
+
const autoLen = PUBLIC_PATH_AUTO.length;
|
|
1022
|
+
for (let i = 0; i < plan.autos.length; i++) {
|
|
1023
|
+
const start = plan.autos[i];
|
|
1024
|
+
replaceSource.replace(start, start + autoLen - 1, undoPath);
|
|
1025
|
+
}
|
|
1026
|
+
if (hash) {
|
|
1027
|
+
for (let i = 0; i < plan.hashes.length; i++) {
|
|
1028
|
+
const { start, end, length } = plan.hashes[i];
|
|
1029
|
+
// `end` is exclusive; ReplaceSource.replace takes an inclusive end.
|
|
1030
|
+
replaceSource.replace(
|
|
1031
|
+
start,
|
|
1032
|
+
end - 1,
|
|
1033
|
+
length === 0 ? hash : hash.slice(0, length)
|
|
1034
|
+
);
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
moduleSource = replaceSource;
|
|
904
1038
|
}
|
|
905
1039
|
|
|
906
1040
|
for (let i = 0; i < inheritance.length; i++) {
|
|
@@ -942,6 +1076,7 @@ class CssModulesPlugin {
|
|
|
942
1076
|
moduleFactoryCache.set(moduleSourceContent, {
|
|
943
1077
|
inheritance,
|
|
944
1078
|
undoPath,
|
|
1079
|
+
hash,
|
|
945
1080
|
source
|
|
946
1081
|
});
|
|
947
1082
|
}
|
|
@@ -953,6 +1088,7 @@ class CssModulesPlugin {
|
|
|
953
1088
|
}
|
|
954
1089
|
|
|
955
1090
|
/**
|
|
1091
|
+
* Renders generated source.
|
|
956
1092
|
* @param {RenderContext} renderContext the render context
|
|
957
1093
|
* @param {CompilationHooks} hooks hooks
|
|
958
1094
|
* @returns {Source} generated source
|
|
@@ -964,12 +1100,26 @@ class CssModulesPlugin {
|
|
|
964
1100
|
codeGenerationResults,
|
|
965
1101
|
modules,
|
|
966
1102
|
runtimeTemplate,
|
|
967
|
-
chunkGraph
|
|
1103
|
+
chunkGraph,
|
|
1104
|
+
hash
|
|
968
1105
|
},
|
|
969
1106
|
hooks
|
|
970
1107
|
) {
|
|
971
1108
|
const source = new ConcatSource();
|
|
1109
|
+
|
|
1110
|
+
/** @type {string | undefined} */
|
|
1111
|
+
let charset;
|
|
1112
|
+
|
|
972
1113
|
for (const module of modules) {
|
|
1114
|
+
if (
|
|
1115
|
+
typeof (
|
|
1116
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
1117
|
+
) !== "undefined" &&
|
|
1118
|
+
typeof charset === "undefined"
|
|
1119
|
+
) {
|
|
1120
|
+
charset = /** @type {CssModuleBuildInfo} */ (module.buildInfo).charset;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
973
1123
|
try {
|
|
974
1124
|
const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
|
|
975
1125
|
const moduleSourceContent =
|
|
@@ -982,6 +1132,7 @@ class CssModulesPlugin {
|
|
|
982
1132
|
module,
|
|
983
1133
|
{
|
|
984
1134
|
undoPath,
|
|
1135
|
+
hash,
|
|
985
1136
|
chunk,
|
|
986
1137
|
chunkGraph,
|
|
987
1138
|
codeGenerationResults,
|
|
@@ -1000,14 +1151,21 @@ class CssModulesPlugin {
|
|
|
1000
1151
|
throw err;
|
|
1001
1152
|
}
|
|
1002
1153
|
}
|
|
1154
|
+
|
|
1003
1155
|
chunk.rendered = true;
|
|
1156
|
+
|
|
1157
|
+
if (charset) {
|
|
1158
|
+
return new ConcatSource(`@charset "${charset}";\n`, source);
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1004
1161
|
return source;
|
|
1005
1162
|
}
|
|
1006
1163
|
|
|
1007
1164
|
/**
|
|
1165
|
+
* Gets chunk filename template.
|
|
1008
1166
|
* @param {Chunk} chunk chunk
|
|
1009
1167
|
* @param {OutputOptions} outputOptions output options
|
|
1010
|
-
* @returns {
|
|
1168
|
+
* @returns {ChunkFilenameTemplate} used filename template
|
|
1011
1169
|
*/
|
|
1012
1170
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
|
1013
1171
|
if (chunk.cssFilenameTemplate) {
|
|
@@ -1019,6 +1177,7 @@ class CssModulesPlugin {
|
|
|
1019
1177
|
}
|
|
1020
1178
|
|
|
1021
1179
|
/**
|
|
1180
|
+
* Returns true, when the chunk has css.
|
|
1022
1181
|
* @param {Chunk} chunk chunk
|
|
1023
1182
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
1024
1183
|
* @returns {boolean} true, when the chunk has css
|
|
@@ -1035,4 +1194,8 @@ class CssModulesPlugin {
|
|
|
1035
1194
|
}
|
|
1036
1195
|
}
|
|
1037
1196
|
|
|
1197
|
+
CssModulesPlugin.getCompilationHooks = createHooksRegistry(
|
|
1198
|
+
createCompilationHooks
|
|
1199
|
+
);
|
|
1200
|
+
|
|
1038
1201
|
module.exports = CssModulesPlugin;
|