@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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,36 @@ 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
|
/**
|
|
99
|
+
* Defines the compilation hooks type used by this module.
|
|
89
100
|
* @typedef {object} CompilationHooks
|
|
90
101
|
* @property {SyncWaterfallHook<[Source, Module, ChunkRenderContext]>} renderModulePackage
|
|
91
102
|
* @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
|
|
103
|
+
* @property {SyncBailHook<[Chunk, Module[], Compilation], Module[] | undefined | void>} orderModules 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
|
|
92
104
|
*/
|
|
93
105
|
|
|
94
106
|
/**
|
|
107
|
+
* Defines the module factory cache entry type used by this module.
|
|
95
108
|
* @typedef {object} ModuleFactoryCacheEntry
|
|
96
109
|
* @property {string} undoPath - The undo path to the CSS file
|
|
110
|
+
* @property {string | undefined} hash - The compilation hash
|
|
97
111
|
* @property {Inheritance} inheritance - The inheritance chain
|
|
98
112
|
* @property {CachedSource} source - The cached source
|
|
99
113
|
*/
|
|
@@ -101,14 +115,87 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
|
|
|
101
115
|
const getCssLoadingRuntimeModule = memoize(() =>
|
|
102
116
|
require("./CssLoadingRuntimeModule")
|
|
103
117
|
);
|
|
104
|
-
const getCssMergeStyleSheetsRuntimeModule = memoize(() =>
|
|
105
|
-
require("./CssMergeStyleSheetsRuntimeModule")
|
|
106
|
-
);
|
|
107
118
|
const getCssInjectStyleRuntimeModule = memoize(() =>
|
|
108
119
|
require("./CssInjectStyleRuntimeModule")
|
|
109
120
|
);
|
|
110
121
|
|
|
111
122
|
/**
|
|
123
|
+
* @typedef {object} PublicPathPlaceholderPlan
|
|
124
|
+
* @property {number[]} autos start offsets of each `PUBLIC_PATH_AUTO` placeholder
|
|
125
|
+
* @property {{ start: number, end: number, length: number }[]} hashes `[start, end)` ranges of each `PUBLIC_PATH_FULL_HASH` placeholder and its requested hash length
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Public-path placeholder offsets are invariant for a given module source —
|
|
130
|
+
* they don't depend on `undoPath`/`hash`/`inheritance`/runtime — so scan once
|
|
131
|
+
* and reuse across renders instead of re-materializing and re-scanning the
|
|
132
|
+
* source on every cache miss. Weakly keyed so entries release with the source.
|
|
133
|
+
* @type {WeakMap<Source, PublicPathPlaceholderPlan>}
|
|
134
|
+
*/
|
|
135
|
+
const publicPathPlaceholderPlans = new WeakMap();
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Memoized inheritance chain per module, revalidated against its source
|
|
139
|
+
* fields — `updateCacheModule` reassigns them on watch rebuilds.
|
|
140
|
+
* @type {WeakMap<CssModule, { cssLayer: CssModule["cssLayer"], supports: CssModule["supports"], media: CssModule["media"], inheritance: CssModule["inheritance"], chain: Inheritance }>}
|
|
141
|
+
*/
|
|
142
|
+
const moduleInheritanceCache = new WeakMap();
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Gets the memoized inheritance chain of a css module.
|
|
146
|
+
* @param {CssModule} module css module
|
|
147
|
+
* @returns {Inheritance} inheritance chain including the module's own entry
|
|
148
|
+
*/
|
|
149
|
+
const getModuleInheritance = (module) => {
|
|
150
|
+
const entry = moduleInheritanceCache.get(module);
|
|
151
|
+
if (
|
|
152
|
+
entry !== undefined &&
|
|
153
|
+
entry.cssLayer === module.cssLayer &&
|
|
154
|
+
entry.supports === module.supports &&
|
|
155
|
+
entry.media === module.media &&
|
|
156
|
+
entry.inheritance === module.inheritance
|
|
157
|
+
) {
|
|
158
|
+
return entry.chain;
|
|
159
|
+
}
|
|
160
|
+
/** @type {Inheritance} */
|
|
161
|
+
const chain = [[module.cssLayer, module.supports, module.media]];
|
|
162
|
+
if (module.inheritance) chain.push(...module.inheritance);
|
|
163
|
+
moduleInheritanceCache.set(module, {
|
|
164
|
+
cssLayer: module.cssLayer,
|
|
165
|
+
supports: module.supports,
|
|
166
|
+
media: module.media,
|
|
167
|
+
inheritance: module.inheritance,
|
|
168
|
+
chain
|
|
169
|
+
});
|
|
170
|
+
return chain;
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Locate the public-path placeholders in a materialized module source.
|
|
175
|
+
* @param {string} content materialized module source
|
|
176
|
+
* @returns {PublicPathPlaceholderPlan} placeholder offsets
|
|
177
|
+
*/
|
|
178
|
+
const computePublicPathPlaceholderPlan = (content) => {
|
|
179
|
+
/** @type {number[]} */
|
|
180
|
+
const autos = [];
|
|
181
|
+
const autoLen = PUBLIC_PATH_AUTO.length;
|
|
182
|
+
for (
|
|
183
|
+
let idx = content.indexOf(PUBLIC_PATH_AUTO);
|
|
184
|
+
idx !== -1;
|
|
185
|
+
idx = content.indexOf(PUBLIC_PATH_AUTO, idx + autoLen)
|
|
186
|
+
) {
|
|
187
|
+
autos.push(idx);
|
|
188
|
+
}
|
|
189
|
+
/** @type {{ start: number, end: number, length: number }[]} */
|
|
190
|
+
const hashes = [];
|
|
191
|
+
walkFullHashPlaceholders(content, (start, end, length) => {
|
|
192
|
+
hashes.push({ start, end, length });
|
|
193
|
+
});
|
|
194
|
+
return { autos, hashes };
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Returns ], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema.
|
|
112
199
|
* @param {string} name name
|
|
113
200
|
* @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema
|
|
114
201
|
*/
|
|
@@ -131,51 +218,35 @@ const generatorValidationOptions = {
|
|
|
131
218
|
baseDataPath: "generator"
|
|
132
219
|
};
|
|
133
220
|
|
|
134
|
-
/** @type {WeakMap<Compilation, CompilationHooks>} */
|
|
135
|
-
const compilationHooksMap = new WeakMap();
|
|
136
|
-
|
|
137
221
|
const PLUGIN_NAME = "CssModulesPlugin";
|
|
138
222
|
|
|
139
223
|
class CssModulesPlugin {
|
|
140
|
-
/**
|
|
141
|
-
* @param {Compilation} compilation the compilation
|
|
142
|
-
* @returns {CompilationHooks} the attached hooks
|
|
143
|
-
*/
|
|
144
|
-
static getCompilationHooks(compilation) {
|
|
145
|
-
if (!(compilation instanceof Compilation)) {
|
|
146
|
-
throw new TypeError(
|
|
147
|
-
"The 'compilation' argument must be an instance of Compilation"
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
151
|
-
if (hooks === undefined) {
|
|
152
|
-
hooks = {
|
|
153
|
-
renderModulePackage: new SyncWaterfallHook([
|
|
154
|
-
"source",
|
|
155
|
-
"module",
|
|
156
|
-
"renderContext"
|
|
157
|
-
]),
|
|
158
|
-
chunkHash: new SyncHook(["chunk", "hash", "context"])
|
|
159
|
-
};
|
|
160
|
-
compilationHooksMap.set(compilation, hooks);
|
|
161
|
-
}
|
|
162
|
-
return hooks;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
224
|
constructor() {
|
|
166
225
|
/** @type {WeakMap<Source, ModuleFactoryCacheEntry>} */
|
|
167
226
|
this._moduleFactoryCache = new WeakMap();
|
|
168
227
|
}
|
|
169
228
|
|
|
170
229
|
/**
|
|
171
|
-
*
|
|
230
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
172
231
|
* @param {Compiler} compiler the compiler instance
|
|
173
232
|
* @returns {void}
|
|
174
233
|
*/
|
|
175
234
|
apply(compiler) {
|
|
235
|
+
// `"auto"` marks implicit enablement (no user rule for CSS files) — see
|
|
236
|
+
// `applyExperimentsDefaults`. Only then loaders win over the built-in type.
|
|
237
|
+
// TODO webpack 6: css defaults to `true`, drop this implicit-only fallback.
|
|
238
|
+
const implicitlyEnabled = compiler.options.experiments.css === "auto";
|
|
176
239
|
compiler.hooks.compilation.tap(
|
|
177
240
|
PLUGIN_NAME,
|
|
178
241
|
(compilation, { normalModuleFactory }) => {
|
|
242
|
+
if (implicitlyEnabled) {
|
|
243
|
+
implicitTypeLoaderFallback(
|
|
244
|
+
normalModuleFactory,
|
|
245
|
+
PLUGIN_NAME,
|
|
246
|
+
/\.css$/i,
|
|
247
|
+
CSS_MODULE_TYPE_AUTO
|
|
248
|
+
);
|
|
249
|
+
}
|
|
179
250
|
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
180
251
|
compilation.dependencyFactories.set(
|
|
181
252
|
CssImportDependency,
|
|
@@ -255,11 +326,11 @@ class CssModulesPlugin {
|
|
|
255
326
|
case CSS_MODULE_TYPE_MODULE: {
|
|
256
327
|
defaultMode = "local";
|
|
257
328
|
compiler.validate(
|
|
258
|
-
() => getSchema("
|
|
329
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
259
330
|
parserOptions,
|
|
260
331
|
parserValidationOptions,
|
|
261
332
|
(options) =>
|
|
262
|
-
require("../../schemas/plugins/css/
|
|
333
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
263
334
|
options
|
|
264
335
|
)
|
|
265
336
|
);
|
|
@@ -268,11 +339,11 @@ class CssModulesPlugin {
|
|
|
268
339
|
case CSS_MODULE_TYPE_AUTO: {
|
|
269
340
|
defaultMode = "auto";
|
|
270
341
|
compiler.validate(
|
|
271
|
-
() => getSchema("
|
|
342
|
+
() => getSchema("CssAutoOrModuleParserOptions"),
|
|
272
343
|
parserOptions,
|
|
273
344
|
parserValidationOptions,
|
|
274
345
|
(options) =>
|
|
275
|
-
require("../../schemas/plugins/css/
|
|
346
|
+
require("../../schemas/plugins/css/CssAutoOrModuleParserOptions.check")(
|
|
276
347
|
options
|
|
277
348
|
)
|
|
278
349
|
);
|
|
@@ -354,71 +425,28 @@ class CssModulesPlugin {
|
|
|
354
425
|
const exportType =
|
|
355
426
|
/** @type {CssParser} */
|
|
356
427
|
(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
|
-
}
|
|
428
|
+
// When CSS is imported from CSS there is only one dependency
|
|
429
|
+
const dependency =
|
|
430
|
+
resolveData.dependencies.length > 0
|
|
431
|
+
? resolveData.dependencies[0]
|
|
432
|
+
: undefined;
|
|
433
|
+
|
|
434
|
+
if (dependency instanceof CssImportDependency) {
|
|
435
|
+
return new CssModule(
|
|
436
|
+
/** @type {CssModuleCreateData} */
|
|
437
|
+
({
|
|
438
|
+
...createData,
|
|
439
|
+
cssLayer: dependency.layer,
|
|
440
|
+
supports: dependency.supports,
|
|
441
|
+
media: dependency.media,
|
|
442
|
+
inheritance: dependency.inheritance,
|
|
443
|
+
exportType: dependency.exportType || exportType
|
|
444
|
+
})
|
|
445
|
+
);
|
|
418
446
|
}
|
|
419
447
|
|
|
420
448
|
return new CssModule(
|
|
421
|
-
/** @type {
|
|
449
|
+
/** @type {CssModuleCreateData} */
|
|
422
450
|
(
|
|
423
451
|
/** @type {unknown} */ ({
|
|
424
452
|
...createData,
|
|
@@ -444,45 +472,78 @@ class CssModulesPlugin {
|
|
|
444
472
|
|
|
445
473
|
JavascriptModulesPlugin.getCompilationHooks(
|
|
446
474
|
compilation
|
|
447
|
-
).renderModuleContent.tap(PLUGIN_NAME, (source, module) => {
|
|
448
|
-
|
|
449
|
-
|
|
475
|
+
).renderModuleContent.tap(PLUGIN_NAME, (source, module, ctx) => {
|
|
476
|
+
const injectCssStylesVar =
|
|
477
|
+
module instanceof ConcatenatedModule &&
|
|
478
|
+
module.modules.find(
|
|
479
|
+
(m) =>
|
|
480
|
+
m instanceof CssModule &&
|
|
481
|
+
m.exportType === "style" &&
|
|
482
|
+
!(/** @type {CssGenerator} */ (m.generator)._exportsOnly)
|
|
483
|
+
);
|
|
484
|
+
const injectHMRCode =
|
|
485
|
+
(module instanceof CssModule && module.hot) ||
|
|
486
|
+
(module instanceof ConcatenatedModule &&
|
|
487
|
+
module.rootModule instanceof CssModule &&
|
|
488
|
+
module.rootModule.hot);
|
|
489
|
+
|
|
490
|
+
if (injectCssStylesVar) {
|
|
491
|
+
source = new ConcatSource(
|
|
492
|
+
"var __webpack_css_styles__ = [];",
|
|
493
|
+
"\n",
|
|
494
|
+
source
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
if (injectHMRCode) {
|
|
498
|
+
const currentModule = /** @type {CssModule} */ (
|
|
499
|
+
module instanceof ConcatenatedModule ? module.rootModule : module
|
|
500
|
+
);
|
|
501
|
+
const exportType = currentModule.exportType || "link";
|
|
450
502
|
// When exportType !== "link", modules behave like JavaScript modules
|
|
451
|
-
if (
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
503
|
+
if (["link", "style"].includes(exportType)) {
|
|
504
|
+
// For exportType === "link", we can optimize with self-acceptance
|
|
505
|
+
const cssData = /** @type {CssModuleBuildInfo} */ (
|
|
506
|
+
module.buildInfo
|
|
507
|
+
).cssData;
|
|
508
|
+
if (!cssData) {
|
|
509
|
+
return source;
|
|
510
|
+
}
|
|
511
|
+
const exports = cssData.exports;
|
|
512
|
+
/** @type {Record<string, string>} */
|
|
513
|
+
const exportsObj = {};
|
|
514
|
+
for (const [key, value] of exports) {
|
|
515
|
+
exportsObj[key] = value;
|
|
516
|
+
}
|
|
517
|
+
const stringifiedExports = JSON.stringify(
|
|
518
|
+
JSON.stringify(exportsObj)
|
|
519
|
+
);
|
|
520
|
+
|
|
521
|
+
const hmrCode = Template.asString([
|
|
522
|
+
"",
|
|
523
|
+
`var __webpack_css_exports__ = ${stringifiedExports};`,
|
|
524
|
+
"// only invalidate when locals change",
|
|
525
|
+
`if (${ctx.runtimeTemplate.optionalChaining("module.hot.data", "__webpack_css_exports__")} && module.hot.data.__webpack_css_exports__ != __webpack_css_exports__) {`,
|
|
526
|
+
Template.indent("module.hot.invalidate();"),
|
|
527
|
+
"} else {",
|
|
528
|
+
Template.indent("module.hot.accept();"),
|
|
529
|
+
"}",
|
|
530
|
+
"module.hot.dispose(function(data) {",
|
|
531
|
+
Template.indent([
|
|
532
|
+
"data.__webpack_css_exports__ = __webpack_css_exports__;"
|
|
533
|
+
]),
|
|
534
|
+
"});"
|
|
535
|
+
]);
|
|
536
|
+
|
|
537
|
+
source = new ConcatSource(source, "\n", new RawSource(hmrCode));
|
|
464
538
|
}
|
|
465
|
-
|
|
466
|
-
|
|
539
|
+
}
|
|
540
|
+
if (injectCssStylesVar) {
|
|
541
|
+
/** @type {ConcatSource} */
|
|
542
|
+
(source).add(
|
|
543
|
+
"for (let i = 0; i < __webpack_css_styles__.length; i++) {\n" +
|
|
544
|
+
`${RuntimeGlobals.cssInjectStyle}(__webpack_css_styles__[i][0], __webpack_css_styles__[i][1]);\n` +
|
|
545
|
+
"}"
|
|
467
546
|
);
|
|
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
547
|
}
|
|
487
548
|
|
|
488
549
|
return source;
|
|
@@ -532,8 +593,8 @@ class CssModulesPlugin {
|
|
|
532
593
|
hash.update(chunkGraph.getModuleHash(module, chunk.runtime));
|
|
533
594
|
}
|
|
534
595
|
}
|
|
535
|
-
|
|
536
|
-
|
|
596
|
+
[chunk.contentHash.css, chunk.contentHashFull.css] =
|
|
597
|
+
digestNonNumericOnlyWithFull(hash, hashDigest, hashDigestLength);
|
|
537
598
|
});
|
|
538
599
|
compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
|
|
539
600
|
const { chunkGraph } = compilation;
|
|
@@ -571,6 +632,7 @@ class CssModulesPlugin {
|
|
|
571
632
|
codeGenerationResults,
|
|
572
633
|
uniqueName: compilation.outputOptions.uniqueName,
|
|
573
634
|
undoPath,
|
|
635
|
+
hash,
|
|
574
636
|
modules,
|
|
575
637
|
runtimeTemplate
|
|
576
638
|
},
|
|
@@ -586,6 +648,7 @@ class CssModulesPlugin {
|
|
|
586
648
|
});
|
|
587
649
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
|
588
650
|
/**
|
|
651
|
+
* Checks whether this css modules plugin is enabled for chunk.
|
|
589
652
|
* @param {Chunk} chunk the chunk
|
|
590
653
|
* @returns {boolean} true, when enabled
|
|
591
654
|
*/
|
|
@@ -600,6 +663,7 @@ class CssModulesPlugin {
|
|
|
600
663
|
/** @type {WeakSet<Chunk>} */
|
|
601
664
|
const onceForChunkSet = new WeakSet();
|
|
602
665
|
/**
|
|
666
|
+
* Handles the hook callback for this code path.
|
|
603
667
|
* @param {Chunk} chunk chunk to check
|
|
604
668
|
* @param {RuntimeRequirements} set runtime requirements
|
|
605
669
|
*/
|
|
@@ -655,20 +719,11 @@ class CssModulesPlugin {
|
|
|
655
719
|
set.add(RuntimeGlobals.getChunkCssFilename);
|
|
656
720
|
});
|
|
657
721
|
|
|
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
722
|
compilation.hooks.runtimeRequirementInTree
|
|
670
723
|
.for(RuntimeGlobals.cssInjectStyle)
|
|
671
724
|
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
725
|
+
// Same as above: namespace stub is enough.
|
|
726
|
+
set.add(RuntimeGlobals.requireScope);
|
|
672
727
|
const CssInjectStyleRuntimeModule =
|
|
673
728
|
getCssInjectStyleRuntimeModule();
|
|
674
729
|
compilation.addRuntimeModule(
|
|
@@ -681,6 +736,7 @@ class CssModulesPlugin {
|
|
|
681
736
|
}
|
|
682
737
|
|
|
683
738
|
/**
|
|
739
|
+
* Gets modules in order.
|
|
684
740
|
* @param {Chunk} chunk chunk
|
|
685
741
|
* @param {Iterable<Module> | undefined} modules unordered modules
|
|
686
742
|
* @param {Compilation} compilation compilation
|
|
@@ -722,6 +778,7 @@ class CssModulesPlugin {
|
|
|
722
778
|
);
|
|
723
779
|
|
|
724
780
|
/**
|
|
781
|
+
* Compares module lists.
|
|
725
782
|
* @param {{ list: Module[] }} a a
|
|
726
783
|
* @param {{ list: Module[] }} b b
|
|
727
784
|
* @returns {-1 | 0 | 1} result
|
|
@@ -826,81 +883,138 @@ class CssModulesPlugin {
|
|
|
826
883
|
}
|
|
827
884
|
|
|
828
885
|
/**
|
|
886
|
+
* Gets ordered chunk css modules.
|
|
829
887
|
* @param {Chunk} chunk chunk
|
|
830
888
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
831
889
|
* @param {Compilation} compilation compilation
|
|
832
890
|
* @returns {CssModule[]} ordered css modules
|
|
833
891
|
*/
|
|
834
892
|
getOrderedChunkCssModules(chunk, chunkGraph, compilation) {
|
|
835
|
-
|
|
836
|
-
|
|
893
|
+
/** @type {string | undefined} */
|
|
894
|
+
let charset;
|
|
895
|
+
|
|
896
|
+
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* @param {Iterable<Module> | undefined} iter modules pre-sorted by full module name
|
|
900
|
+
* @returns {Module[]} ordered modules
|
|
901
|
+
*/
|
|
902
|
+
const orderModules = (iter) => {
|
|
903
|
+
const modules = iter ? [...iter] : [];
|
|
904
|
+
const result = hooks.orderModules.call(chunk, modules, compilation);
|
|
905
|
+
if (result !== undefined) return result;
|
|
906
|
+
return this.getModulesInOrder(chunk, modules, compilation);
|
|
907
|
+
};
|
|
908
|
+
|
|
909
|
+
const comparator = compareModulesByFullName(compilation.compiler);
|
|
910
|
+
const importModules = orderModules(
|
|
911
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
837
912
|
chunk,
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
),
|
|
845
|
-
...this.getModulesInOrder(
|
|
913
|
+
CSS_IMPORT_TYPE,
|
|
914
|
+
comparator
|
|
915
|
+
)
|
|
916
|
+
);
|
|
917
|
+
const cssModules = orderModules(
|
|
918
|
+
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
846
919
|
chunk,
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
CSS_TYPE,
|
|
850
|
-
compareModulesByFullName(compilation.compiler)
|
|
851
|
-
),
|
|
852
|
-
compilation
|
|
920
|
+
CSS_TYPE,
|
|
921
|
+
comparator
|
|
853
922
|
)
|
|
854
|
-
|
|
923
|
+
);
|
|
924
|
+
for (const module of cssModules) {
|
|
925
|
+
if (
|
|
926
|
+
typeof (
|
|
927
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
928
|
+
) !== "undefined"
|
|
929
|
+
) {
|
|
930
|
+
if (
|
|
931
|
+
typeof charset !== "undefined" &&
|
|
932
|
+
charset !==
|
|
933
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
934
|
+
) {
|
|
935
|
+
const err = new WebpackError(
|
|
936
|
+
`Conflicting @charset at-rules detected: the module ${module.readableIdentifier(
|
|
937
|
+
compilation.requestShortener
|
|
938
|
+
)} (in chunk ${chunk.name || chunk.id}) specifies "${
|
|
939
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
940
|
+
}", but "${charset}" was expected, all modules must use the same character set`
|
|
941
|
+
);
|
|
942
|
+
|
|
943
|
+
err.chunk = chunk;
|
|
944
|
+
err.module = module;
|
|
945
|
+
err.hideStack = true;
|
|
946
|
+
|
|
947
|
+
compilation.warnings.push(err);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
if (typeof charset === "undefined") {
|
|
951
|
+
charset = /** @type {CssModuleBuildInfo} */ (module.buildInfo)
|
|
952
|
+
.charset;
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
return /** @type {CssModule[]} */ ([...importModules, ...cssModules]);
|
|
855
958
|
}
|
|
856
959
|
|
|
857
960
|
/**
|
|
961
|
+
* Renders css module source.
|
|
858
962
|
* @param {CssModule} module css module
|
|
859
963
|
* @param {ChunkRenderContext} renderContext options object
|
|
860
964
|
* @param {CompilationHooks} hooks hooks
|
|
861
965
|
* @returns {Source | null} css module source
|
|
862
966
|
*/
|
|
863
967
|
static renderModule(module, renderContext, hooks) {
|
|
864
|
-
const { undoPath, moduleFactoryCache, moduleSourceContent } =
|
|
968
|
+
const { undoPath, hash, moduleFactoryCache, moduleSourceContent } =
|
|
969
|
+
renderContext;
|
|
865
970
|
const cacheEntry = moduleFactoryCache.get(moduleSourceContent);
|
|
866
971
|
|
|
867
|
-
|
|
868
|
-
const inheritance = [[module.cssLayer, module.supports, module.media]];
|
|
869
|
-
if (module.inheritance) {
|
|
870
|
-
inheritance.push(...module.inheritance);
|
|
871
|
-
}
|
|
972
|
+
const inheritance = getModuleInheritance(module);
|
|
872
973
|
|
|
873
974
|
/** @type {CachedSource} */
|
|
874
975
|
let source;
|
|
875
976
|
if (
|
|
876
977
|
cacheEntry &&
|
|
877
978
|
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
|
-
})
|
|
979
|
+
cacheEntry.hash === hash &&
|
|
980
|
+
// Memoized per module, so identity implies equal entries.
|
|
981
|
+
cacheEntry.inheritance === inheritance
|
|
886
982
|
) {
|
|
887
983
|
source = cacheEntry.source;
|
|
888
984
|
} else {
|
|
889
985
|
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
|
|
986
|
+
let plan = publicPathPlaceholderPlans.get(moduleSourceContent);
|
|
987
|
+
if (plan === undefined) {
|
|
988
|
+
plan = computePublicPathPlaceholderPlan(
|
|
989
|
+
/** @type {string} */ (moduleSourceContent.source())
|
|
903
990
|
);
|
|
991
|
+
publicPathPlaceholderPlans.set(moduleSourceContent, plan);
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
/** @type {Source} */
|
|
995
|
+
let moduleSource = moduleSourceContent;
|
|
996
|
+
|
|
997
|
+
// Apply placeholder substitutions only when present; the common
|
|
998
|
+
// (no-placeholder) case skips the ReplaceSource wrapper entirely.
|
|
999
|
+
if (plan.autos.length > 0 || (hash && plan.hashes.length > 0)) {
|
|
1000
|
+
const replaceSource = new ReplaceSource(moduleSourceContent);
|
|
1001
|
+
const autoLen = PUBLIC_PATH_AUTO.length;
|
|
1002
|
+
for (let i = 0; i < plan.autos.length; i++) {
|
|
1003
|
+
const start = plan.autos[i];
|
|
1004
|
+
replaceSource.replace(start, start + autoLen - 1, undoPath);
|
|
1005
|
+
}
|
|
1006
|
+
if (hash) {
|
|
1007
|
+
for (let i = 0; i < plan.hashes.length; i++) {
|
|
1008
|
+
const { start, end, length } = plan.hashes[i];
|
|
1009
|
+
// `end` is exclusive; ReplaceSource.replace takes an inclusive end.
|
|
1010
|
+
replaceSource.replace(
|
|
1011
|
+
start,
|
|
1012
|
+
end - 1,
|
|
1013
|
+
length === 0 ? hash : hash.slice(0, length)
|
|
1014
|
+
);
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
moduleSource = replaceSource;
|
|
904
1018
|
}
|
|
905
1019
|
|
|
906
1020
|
for (let i = 0; i < inheritance.length; i++) {
|
|
@@ -942,6 +1056,7 @@ class CssModulesPlugin {
|
|
|
942
1056
|
moduleFactoryCache.set(moduleSourceContent, {
|
|
943
1057
|
inheritance,
|
|
944
1058
|
undoPath,
|
|
1059
|
+
hash,
|
|
945
1060
|
source
|
|
946
1061
|
});
|
|
947
1062
|
}
|
|
@@ -953,6 +1068,7 @@ class CssModulesPlugin {
|
|
|
953
1068
|
}
|
|
954
1069
|
|
|
955
1070
|
/**
|
|
1071
|
+
* Renders generated source.
|
|
956
1072
|
* @param {RenderContext} renderContext the render context
|
|
957
1073
|
* @param {CompilationHooks} hooks hooks
|
|
958
1074
|
* @returns {Source} generated source
|
|
@@ -964,12 +1080,26 @@ class CssModulesPlugin {
|
|
|
964
1080
|
codeGenerationResults,
|
|
965
1081
|
modules,
|
|
966
1082
|
runtimeTemplate,
|
|
967
|
-
chunkGraph
|
|
1083
|
+
chunkGraph,
|
|
1084
|
+
hash
|
|
968
1085
|
},
|
|
969
1086
|
hooks
|
|
970
1087
|
) {
|
|
971
1088
|
const source = new ConcatSource();
|
|
1089
|
+
|
|
1090
|
+
/** @type {string | undefined} */
|
|
1091
|
+
let charset;
|
|
1092
|
+
|
|
972
1093
|
for (const module of modules) {
|
|
1094
|
+
if (
|
|
1095
|
+
typeof (
|
|
1096
|
+
/** @type {CssModuleBuildInfo} */ (module.buildInfo).charset
|
|
1097
|
+
) !== "undefined" &&
|
|
1098
|
+
typeof charset === "undefined"
|
|
1099
|
+
) {
|
|
1100
|
+
charset = /** @type {CssModuleBuildInfo} */ (module.buildInfo).charset;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
973
1103
|
try {
|
|
974
1104
|
const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
|
|
975
1105
|
const moduleSourceContent =
|
|
@@ -982,6 +1112,7 @@ class CssModulesPlugin {
|
|
|
982
1112
|
module,
|
|
983
1113
|
{
|
|
984
1114
|
undoPath,
|
|
1115
|
+
hash,
|
|
985
1116
|
chunk,
|
|
986
1117
|
chunkGraph,
|
|
987
1118
|
codeGenerationResults,
|
|
@@ -1000,14 +1131,21 @@ class CssModulesPlugin {
|
|
|
1000
1131
|
throw err;
|
|
1001
1132
|
}
|
|
1002
1133
|
}
|
|
1134
|
+
|
|
1003
1135
|
chunk.rendered = true;
|
|
1136
|
+
|
|
1137
|
+
if (charset) {
|
|
1138
|
+
return new ConcatSource(`@charset "${charset}";\n`, source);
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1004
1141
|
return source;
|
|
1005
1142
|
}
|
|
1006
1143
|
|
|
1007
1144
|
/**
|
|
1145
|
+
* Gets chunk filename template.
|
|
1008
1146
|
* @param {Chunk} chunk chunk
|
|
1009
1147
|
* @param {OutputOptions} outputOptions output options
|
|
1010
|
-
* @returns {
|
|
1148
|
+
* @returns {ChunkFilenameTemplate} used filename template
|
|
1011
1149
|
*/
|
|
1012
1150
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
|
1013
1151
|
if (chunk.cssFilenameTemplate) {
|
|
@@ -1019,6 +1157,7 @@ class CssModulesPlugin {
|
|
|
1019
1157
|
}
|
|
1020
1158
|
|
|
1021
1159
|
/**
|
|
1160
|
+
* Returns true, when the chunk has css.
|
|
1022
1161
|
* @param {Chunk} chunk chunk
|
|
1023
1162
|
* @param {ChunkGraph} chunkGraph chunk graph
|
|
1024
1163
|
* @returns {boolean} true, when the chunk has css
|
|
@@ -1035,4 +1174,17 @@ class CssModulesPlugin {
|
|
|
1035
1174
|
}
|
|
1036
1175
|
}
|
|
1037
1176
|
|
|
1177
|
+
CssModulesPlugin.getCompilationHooks = createHooksRegistry(
|
|
1178
|
+
() =>
|
|
1179
|
+
/** @type {CompilationHooks} */ ({
|
|
1180
|
+
renderModulePackage: new SyncWaterfallHook([
|
|
1181
|
+
"source",
|
|
1182
|
+
"module",
|
|
1183
|
+
"renderContext"
|
|
1184
|
+
]),
|
|
1185
|
+
chunkHash: new SyncHook(["chunk", "hash", "context"]),
|
|
1186
|
+
orderModules: new SyncBailHook(["chunk", "modules", "compilation"])
|
|
1187
|
+
})
|
|
1188
|
+
);
|
|
1189
|
+
|
|
1038
1190
|
module.exports = CssModulesPlugin;
|