@depup/webpack 5.109.0-depup.0 → 5.110.1-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 +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +28 -36
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +7819 -3331
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +31 -18
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +232 -68
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { SyncHook } = require("tapable");
|
|
9
|
+
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
10
|
+
|
|
11
|
+
/** @import Dependency from "../Dependency" */
|
|
12
|
+
|
|
13
|
+
const createCompilationHooks = () => ({
|
|
14
|
+
/**
|
|
15
|
+
* @type {SyncHook<Dependency>}
|
|
16
|
+
* @since 5.96.0
|
|
17
|
+
*/
|
|
18
|
+
addContainerEntryDependency: new SyncHook(["dependency"]),
|
|
19
|
+
/**
|
|
20
|
+
* @type {SyncHook<Dependency>}
|
|
21
|
+
* @since 5.96.0
|
|
22
|
+
*/
|
|
23
|
+
addFederationRuntimeDependency: new SyncHook(["dependency"])
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
/** @typedef {ReturnType<typeof createCompilationHooks>} CompilationHooks */
|
|
27
|
+
|
|
28
|
+
// lives outside `ModuleFederationPlugin` so the plugins it applies can read the
|
|
29
|
+
// hooks without requiring it back
|
|
30
|
+
const getCompilationHooks = createHooksRegistry(createCompilationHooks);
|
|
31
|
+
|
|
32
|
+
module.exports = getCompilationHooks;
|
package/lib/css/CssGenerator.js
CHANGED
|
@@ -15,6 +15,7 @@ const {
|
|
|
15
15
|
const { UsageState } = require("../ExportsInfo");
|
|
16
16
|
const Generator = require("../Generator");
|
|
17
17
|
const InitFragment = require("../InitFragment");
|
|
18
|
+
const ModuleFilenameHelpers = require("../ModuleFilenameHelpers");
|
|
18
19
|
const {
|
|
19
20
|
CSS_TEXT_TYPE,
|
|
20
21
|
CSS_TEXT_TYPES,
|
|
@@ -33,49 +34,60 @@ const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
|
33
34
|
const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImportSideEffectDependency");
|
|
34
35
|
|
|
35
36
|
const { encodeMappings } = require("../util/createMappings");
|
|
36
|
-
const
|
|
37
|
+
const {
|
|
38
|
+
contextifySourceUrl,
|
|
39
|
+
makePathsAbsolute
|
|
40
|
+
} = require("../util/identifier");
|
|
41
|
+
const PropertyName = require("../util/property");
|
|
37
42
|
const {
|
|
38
43
|
PUBLIC_PATH_FULL_HASH,
|
|
39
44
|
walkFullHashPlaceholders
|
|
40
45
|
} = require("../util/publicPathPlaceholder");
|
|
46
|
+
const CssModulesPlugin = require("./CssModulesPlugin");
|
|
41
47
|
|
|
42
48
|
// Avoids `type.split("/")[0]` allocation on the `getTypes` hot path.
|
|
43
49
|
const CSS_TYPE_PREFIX = `${CSS_TYPE}/`;
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
/** @
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
/** @
|
|
54
|
-
/** @
|
|
55
|
-
/** @
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/** @
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
51
|
+
const URL_SCHEME_REGEXP = /^(?:data|https?):/;
|
|
52
|
+
|
|
53
|
+
/** @import { Source, RawSourceMap } from "webpack-sources" */
|
|
54
|
+
/**
|
|
55
|
+
* @import {
|
|
56
|
+
* CssModuleGeneratorOptions
|
|
57
|
+
* } from "../../declarations/WebpackOptions"
|
|
58
|
+
*/
|
|
59
|
+
/** @import { DependencyConstructor } from "../Compilation" */
|
|
60
|
+
/** @import CodeGenerationResults from "../CodeGenerationResults" */
|
|
61
|
+
/** @import Dependency from "../Dependency" */
|
|
62
|
+
/**
|
|
63
|
+
* @import {
|
|
64
|
+
* CssData,
|
|
65
|
+
* DependencyTemplateContext,
|
|
66
|
+
* CssDependencyTemplateContext
|
|
67
|
+
* } from "../DependencyTemplate"
|
|
68
|
+
*/
|
|
69
|
+
/** @import { GenerateContext, UpdateHashContext } from "../Generator" */
|
|
70
|
+
/**
|
|
71
|
+
* @import {
|
|
72
|
+
* ConcatenationBailoutReasonContext,
|
|
73
|
+
* SourceType,
|
|
74
|
+
* SourceTypes
|
|
75
|
+
* } from "../Module"
|
|
76
|
+
*/
|
|
77
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
78
|
+
/** @import NormalModule from "../NormalModule" */
|
|
79
|
+
/** @import Hash from "../util/Hash" */
|
|
80
|
+
/** @import { ModuleFactoryCacheEntry } from "./CssModulesPlugin" */
|
|
81
|
+
/**
|
|
82
|
+
* @import CssModule, {
|
|
83
|
+
* CssModuleBuildInfo,
|
|
84
|
+
* CssModuleBuildMeta
|
|
85
|
+
* } from "./CssModule"
|
|
86
|
+
*/
|
|
70
87
|
|
|
71
88
|
/** @typedef {{ line: number, column: number }} SourcePosition */
|
|
72
89
|
/** @typedef {Map<string, SourcePosition>} ExportLocsMap */
|
|
73
90
|
|
|
74
|
-
const getPropertyName = memoize(() => require("../util/property"));
|
|
75
|
-
const getCssModulesPlugin = memoize(() => require("./CssModulesPlugin"));
|
|
76
|
-
|
|
77
|
-
/** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
|
|
78
|
-
|
|
79
91
|
/**
|
|
80
92
|
* Build a v3 source map mapping CSS-class export lines back to their selector positions.
|
|
81
93
|
* @param {string} generatedJs the generated JS string
|
|
@@ -303,8 +315,13 @@ class CssGenerator extends Generator {
|
|
|
303
315
|
const generateContentCode = () => {
|
|
304
316
|
switch (exportType) {
|
|
305
317
|
case "style": {
|
|
306
|
-
const
|
|
307
|
-
if (!
|
|
318
|
+
const rendered = this._renderCss(module, generateContext);
|
|
319
|
+
if (!rendered) return "";
|
|
320
|
+
const cssSource = this._renderEmbeddedSource(
|
|
321
|
+
rendered,
|
|
322
|
+
module,
|
|
323
|
+
generateContext
|
|
324
|
+
);
|
|
308
325
|
|
|
309
326
|
generateContext.runtimeRequirements.add(
|
|
310
327
|
RuntimeGlobals.cssInjectStyle
|
|
@@ -420,7 +437,7 @@ class CssGenerator extends Generator {
|
|
|
420
437
|
const source = new ConcatSource();
|
|
421
438
|
/** @type {Set<string>} */
|
|
422
439
|
const usedIdentifiers = new Set();
|
|
423
|
-
const { RESERVED_IDENTIFIER } =
|
|
440
|
+
const { RESERVED_IDENTIFIER } = PropertyName;
|
|
424
441
|
|
|
425
442
|
if (defaultExport) {
|
|
426
443
|
const usedName = getUsedExportName("default");
|
|
@@ -549,8 +566,13 @@ class CssGenerator extends Generator {
|
|
|
549
566
|
}
|
|
550
567
|
|
|
551
568
|
const generatedJs = /** @type {string} */ (source.source());
|
|
552
|
-
|
|
553
|
-
|
|
569
|
+
// Context-relative identifier, like `NormalModule.createSource` — so
|
|
570
|
+
// `SourceMapDevToolPlugin` can match the module and apply the
|
|
571
|
+
// devtool filename template instead of leaking this raw name
|
|
572
|
+
const sourceName = contextifySourceUrl(
|
|
573
|
+
/** @type {string} */ (compilation.options.context),
|
|
574
|
+
module.identifier(),
|
|
575
|
+
compilation.compiler.root
|
|
554
576
|
);
|
|
555
577
|
|
|
556
578
|
if (
|
|
@@ -595,9 +617,7 @@ class CssGenerator extends Generator {
|
|
|
595
617
|
generateError(error, module, generateContext) {
|
|
596
618
|
switch (generateContext.type) {
|
|
597
619
|
case JAVASCRIPT_TYPE: {
|
|
598
|
-
return new RawSource(
|
|
599
|
-
`throw new Error(${JSON.stringify(error.message)});`
|
|
600
|
-
);
|
|
620
|
+
return new RawSource(Generator.throwBuildErrorCode(error));
|
|
601
621
|
}
|
|
602
622
|
case CSS_TYPE: {
|
|
603
623
|
return new RawSource(`/**\n ${error.message} \n**/`);
|
|
@@ -734,9 +754,27 @@ class CssGenerator extends Generator {
|
|
|
734
754
|
* @param {Hash} hash hash that will be modified
|
|
735
755
|
* @param {UpdateHashContext} updateHashContext context for updating hash
|
|
736
756
|
*/
|
|
737
|
-
updateHash(hash, { module }) {
|
|
757
|
+
updateHash(hash, { module, runtimeTemplate }) {
|
|
738
758
|
hash.update(/** @type {boolean} */ (this._esModule).toString());
|
|
739
759
|
hash.update(/** @type {boolean} */ (this._exportsOnly).toString());
|
|
760
|
+
// Only a module embedded in JS gets an inlined map, which varies on devtool
|
|
761
|
+
// and its filename options without changing the source. `String`: templates
|
|
762
|
+
// may be functions.
|
|
763
|
+
const exportType = /** @type {CssModule} */ (module).exportType || "link";
|
|
764
|
+
if (runtimeTemplate && exportType !== "link") {
|
|
765
|
+
// What a tap varies on has to reach the key, or a changed option replays.
|
|
766
|
+
runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
|
|
767
|
+
const { compilation } = runtimeTemplate;
|
|
768
|
+
const devtool = compilation.options.devtool;
|
|
769
|
+
const outputOptions = compilation.outputOptions;
|
|
770
|
+
hash.update(
|
|
771
|
+
`|${typeof devtool === "string" ? devtool : ""}|${
|
|
772
|
+
outputOptions.devtoolNamespace || ""
|
|
773
|
+
}|${String(outputOptions.devtoolModuleFilenameTemplate || "")}|${String(
|
|
774
|
+
outputOptions.devtoolFallbackModuleFilenameTemplate || ""
|
|
775
|
+
)}`
|
|
776
|
+
);
|
|
777
|
+
}
|
|
740
778
|
}
|
|
741
779
|
|
|
742
780
|
/**
|
|
@@ -867,7 +905,6 @@ class CssGenerator extends Generator {
|
|
|
867
905
|
const compilation = generateContext.runtimeTemplate.compilation;
|
|
868
906
|
const undoPath = "";
|
|
869
907
|
|
|
870
|
-
const CssModulesPlugin = getCssModulesPlugin();
|
|
871
908
|
const hooks = CssModulesPlugin.getCompilationHooks(compilation);
|
|
872
909
|
return CssModulesPlugin.renderModule(
|
|
873
910
|
/** @type {CssModule} */ (module),
|
|
@@ -881,6 +918,88 @@ class CssGenerator extends Generator {
|
|
|
881
918
|
);
|
|
882
919
|
}
|
|
883
920
|
|
|
921
|
+
/**
|
|
922
|
+
* Applies the devtool filename template to the sources of a map that is inlined
|
|
923
|
+
* into the module's own output: `SourceMapDevToolPlugin` only rewrites maps of
|
|
924
|
+
* emitted assets, so this one would keep raw module identifiers.
|
|
925
|
+
* @param {RawSourceMap} map the map to rename the sources of
|
|
926
|
+
* @param {GenerateContext} generateContext the generate context
|
|
927
|
+
* @returns {RawSourceMap} the map with devtool source names
|
|
928
|
+
*/
|
|
929
|
+
_nameMapSources(map, generateContext) {
|
|
930
|
+
const { chunkGraph, runtimeTemplate } = generateContext;
|
|
931
|
+
const { compilation } = runtimeTemplate;
|
|
932
|
+
const outputOptions = compilation.outputOptions;
|
|
933
|
+
const absolutify = makePathsAbsolute.bindContextCache(
|
|
934
|
+
/** @type {string} */ (compilation.options.context),
|
|
935
|
+
compilation.compiler.root
|
|
936
|
+
);
|
|
937
|
+
const options = {
|
|
938
|
+
moduleFilenameTemplate:
|
|
939
|
+
outputOptions.devtoolModuleFilenameTemplate ||
|
|
940
|
+
ModuleFilenameHelpers.DEFAULT_MODULE_FILENAME_TEMPLATE,
|
|
941
|
+
namespace: outputOptions.devtoolNamespace || ""
|
|
942
|
+
};
|
|
943
|
+
const contextInfo = {
|
|
944
|
+
requestShortener: compilation.requestShortener,
|
|
945
|
+
chunkGraph,
|
|
946
|
+
hashFunction: outputOptions.hashFunction
|
|
947
|
+
};
|
|
948
|
+
/** @type {Set<string>} */
|
|
949
|
+
const usedNames = new Set();
|
|
950
|
+
const sources = map.sources.map((source) => {
|
|
951
|
+
if (!source.startsWith("webpack://")) return source;
|
|
952
|
+
const absoluteSource = absolutify(source.slice(10));
|
|
953
|
+
// Sources a loader reported for files that are not modules (e.g. a less
|
|
954
|
+
// partial) are templated as a path, like `SourceMapDevToolPlugin` does
|
|
955
|
+
const module = compilation.findModule(absoluteSource) || absoluteSource;
|
|
956
|
+
if (typeof module === "string" && URL_SCHEME_REGEXP.test(module)) {
|
|
957
|
+
return module;
|
|
958
|
+
}
|
|
959
|
+
let name = ModuleFilenameHelpers.createFilename(
|
|
960
|
+
module,
|
|
961
|
+
options,
|
|
962
|
+
contextInfo
|
|
963
|
+
);
|
|
964
|
+
// Same disambiguation as `SourceMapDevToolPlugin`: modules sharing a
|
|
965
|
+
// resource path (e.g. one file imported under two layers) collide
|
|
966
|
+
if (usedNames.has(name)) {
|
|
967
|
+
name = ModuleFilenameHelpers.createFilename(
|
|
968
|
+
module,
|
|
969
|
+
{
|
|
970
|
+
moduleFilenameTemplate:
|
|
971
|
+
outputOptions.devtoolFallbackModuleFilenameTemplate ||
|
|
972
|
+
ModuleFilenameHelpers.DEFAULT_FALLBACK_MODULE_FILENAME_TEMPLATE,
|
|
973
|
+
namespace: options.namespace
|
|
974
|
+
},
|
|
975
|
+
contextInfo
|
|
976
|
+
);
|
|
977
|
+
while (usedNames.has(name)) name += "*";
|
|
978
|
+
}
|
|
979
|
+
usedNames.add(name);
|
|
980
|
+
return name;
|
|
981
|
+
});
|
|
982
|
+
|
|
983
|
+
return { ...map, sources };
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/**
|
|
987
|
+
* Offer CSS bound for a JS string literal to `renderEmbeddedSource`. No `.css`
|
|
988
|
+
* asset carries this text, so an asset-level minimizer never sees it.
|
|
989
|
+
* @param {Source} cssSource the CSS source
|
|
990
|
+
* @param {NormalModule} module the module
|
|
991
|
+
* @param {GenerateContext} generateContext the generate context
|
|
992
|
+
* @returns {Source} the source a tap returned, or the original
|
|
993
|
+
*/
|
|
994
|
+
_renderEmbeddedSource(cssSource, module, generateContext) {
|
|
995
|
+
const { compilation } = generateContext.runtimeTemplate;
|
|
996
|
+
return compilation._resolveEmbeddedSource(cssSource, {
|
|
997
|
+
type: CSS_TYPE,
|
|
998
|
+
hostType: JAVASCRIPT_TYPE,
|
|
999
|
+
module
|
|
1000
|
+
});
|
|
1001
|
+
}
|
|
1002
|
+
|
|
884
1003
|
/**
|
|
885
1004
|
* Convert a CSS Source into a JS string literal, splicing `__webpack_require__.h()` for `[fullhash]` placeholders.
|
|
886
1005
|
* @param {Source} cssSource the CSS source
|
|
@@ -891,11 +1010,17 @@ class CssGenerator extends Generator {
|
|
|
891
1010
|
_cssToJsLiteral(cssSource, devtool, generateContext) {
|
|
892
1011
|
const { source, map } = cssSource.sourceAndMap();
|
|
893
1012
|
let content = /** @type {string} */ (source);
|
|
894
|
-
|
|
1013
|
+
// A `renderEmbeddedSource` tap may hand back a mapped source whatever
|
|
1014
|
+
// `devtool` says, so asking for no map at all is checked here too — this
|
|
1015
|
+
// data URI would ship the sources inside the bundle. `hidden` is the same
|
|
1016
|
+
// answer for the same reason.
|
|
1017
|
+
const wanted = typeof devtool === "string" && !devtool.includes("hidden");
|
|
1018
|
+
if (map && wanted) {
|
|
1019
|
+
const namedMap = this._nameMapSources(map, generateContext);
|
|
895
1020
|
const inlineMap =
|
|
896
1021
|
typeof devtool === "string" && devtool.includes("nosources")
|
|
897
|
-
? { ...
|
|
898
|
-
:
|
|
1022
|
+
? { ...namedMap, sourcesContent: undefined }
|
|
1023
|
+
: namedMap;
|
|
899
1024
|
const base64Map = Buffer.from(JSON.stringify(inlineMap), "utf8").toString(
|
|
900
1025
|
"base64"
|
|
901
1026
|
);
|
|
@@ -949,6 +1074,15 @@ class CssGenerator extends Generator {
|
|
|
949
1074
|
result = cssSource;
|
|
950
1075
|
}
|
|
951
1076
|
|
|
1077
|
+
// Only text bound for a JS literal. `CSS_TEXT_TYPE` is an HTML inline
|
|
1078
|
+
// `<style>` / `style=""`, and whether that is CSS at all depends on the
|
|
1079
|
+
// element's `type` — a call the HTML layer makes and `htmlMinify` honors,
|
|
1080
|
+
// which is not visible here. After the `@charset` prefix, so a tap sees a
|
|
1081
|
+
// whole stylesheet.
|
|
1082
|
+
if (result && asJsLiteral) {
|
|
1083
|
+
result = this._renderEmbeddedSource(result, module, generateContext);
|
|
1084
|
+
}
|
|
1085
|
+
|
|
952
1086
|
if (asJsLiteral) {
|
|
953
1087
|
const devtool =
|
|
954
1088
|
generateContext.runtimeTemplate.compilation.options.devtool;
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { SyncWaterfallHook } = require("tapable");
|
|
9
|
-
/** @
|
|
9
|
+
/** @import Compilation from "../Compilation" */
|
|
10
10
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
11
11
|
const RuntimeModule = require("../RuntimeModule");
|
|
12
12
|
const Template = require("../Template");
|
|
13
13
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
14
14
|
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
15
|
+
/** @import Chunk from "../Chunk" */
|
|
16
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @typedef {object} CssInjectCompilationHooks
|
|
@@ -63,7 +63,9 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
63
63
|
? [
|
|
64
64
|
"if (typeof document === 'undefined') {",
|
|
65
65
|
Template.indent([
|
|
66
|
-
|
|
66
|
+
// "module-" keeps numeric module ids from enumerating in ascending
|
|
67
|
+
// order instead of the order the styles were applied in
|
|
68
|
+
`${runtimeTemplate.cssServerStyleRegistry()}["module-" + identifier] = css;`,
|
|
67
69
|
"return;"
|
|
68
70
|
]),
|
|
69
71
|
"}"
|
|
@@ -74,7 +76,7 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
|
|
|
74
76
|
"if (typeof document === 'undefined') {",
|
|
75
77
|
Template.indent([
|
|
76
78
|
`${cst} styles = ${runtimeTemplate.cssServerStyleRegistry()};`,
|
|
77
|
-
|
|
79
|
+
'for (var i = 0; i < identifiers.length; i++) delete styles["module-" + identifiers[i]];',
|
|
78
80
|
"return;"
|
|
79
81
|
]),
|
|
80
82
|
"}"
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { SyncWaterfallHook } = require("tapable");
|
|
9
|
-
/** @
|
|
10
|
-
const { CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
9
|
+
/** @import Compilation from "../Compilation" */
|
|
11
10
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
12
11
|
const RuntimeModule = require("../RuntimeModule");
|
|
13
12
|
const Template = require("../Template");
|
|
@@ -15,17 +14,34 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
|
15
14
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
16
15
|
const { chunkHasCss } = require("./CssModulesPlugin");
|
|
17
16
|
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
/** @import Chunk, { ChunkId } from "../Chunk" */
|
|
18
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
19
|
+
|
|
20
|
+
const createCompilationHooks = () => ({
|
|
21
|
+
/**
|
|
22
|
+
* @type {SyncWaterfallHook<[string, Chunk]>}
|
|
23
|
+
* @since 5.66.0
|
|
24
|
+
*/
|
|
25
|
+
createStylesheet: new SyncWaterfallHook(["source", "chunk"]),
|
|
26
|
+
/**
|
|
27
|
+
* @type {SyncWaterfallHook<[string, Chunk]>}
|
|
28
|
+
* @since 5.91.0
|
|
29
|
+
*/
|
|
30
|
+
linkPreload: new SyncWaterfallHook(["source", "chunk"]),
|
|
31
|
+
/**
|
|
32
|
+
* @type {SyncWaterfallHook<[string, Chunk]>}
|
|
33
|
+
* @since 5.91.0
|
|
34
|
+
*/
|
|
35
|
+
linkPrefetch: new SyncWaterfallHook(["source", "chunk"]),
|
|
36
|
+
/**
|
|
37
|
+
* @type {SyncWaterfallHook<[string, Chunk]>}
|
|
38
|
+
* @since 5.107.0
|
|
39
|
+
*/
|
|
40
|
+
linkInsert: new SyncWaterfallHook(["source", "chunk"])
|
|
41
|
+
});
|
|
22
42
|
|
|
23
43
|
/**
|
|
24
|
-
* @typedef {
|
|
25
|
-
* @property {SyncWaterfallHook<[string, Chunk]>} createStylesheet
|
|
26
|
-
* @property {SyncWaterfallHook<[string, Chunk]>} linkPreload
|
|
27
|
-
* @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
|
|
28
|
-
* @property {SyncWaterfallHook<[string, Chunk]>} linkInsert
|
|
44
|
+
* @typedef {ReturnType<typeof createCompilationHooks>} CssLoadingRuntimeModulePluginHooks
|
|
29
45
|
*/
|
|
30
46
|
|
|
31
47
|
class CssLoadingRuntimeModule extends RuntimeModule {
|
|
@@ -55,20 +71,14 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
55
71
|
uniqueName,
|
|
56
72
|
chunkLoadTimeout: loadTimeout,
|
|
57
73
|
charset,
|
|
58
|
-
|
|
74
|
+
resourceHints
|
|
59
75
|
}
|
|
60
76
|
} = compilation;
|
|
77
|
+
const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
|
|
61
78
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* @param {Chunk} chunk the chunk
|
|
66
|
-
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
67
|
-
* @returns {boolean} true, if the chunk has css
|
|
68
|
-
*/
|
|
69
|
-
(chunk, chunkGraph) =>
|
|
70
|
-
Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_TYPE))
|
|
71
|
-
);
|
|
79
|
+
// The predicate the stylesheet is emitted from: an `@import` external gives a
|
|
80
|
+
// chunk a css asset without a `CSS_TYPE` module, and it still has to load.
|
|
81
|
+
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasCss);
|
|
72
82
|
const hasCssMatcher = compileBooleanMatcher(conditionMap);
|
|
73
83
|
|
|
74
84
|
const withLoading =
|
|
@@ -103,6 +113,15 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
103
113
|
// `parser.javascript.dynamicImportCssPreload` — CSS-only preload order.
|
|
104
114
|
chunk.hasChildByOrder(chunkGraph, "cssPreload", true, chunkHasCss));
|
|
105
115
|
|
|
116
|
+
// Under module output each stylesheet is a known file, so the urls are written
|
|
117
|
+
// out and read by id rather than built from the chunk id at runtime.
|
|
118
|
+
const cssUrls = runtimeTemplate.analyzableCssChunkUrls(
|
|
119
|
+
chunk,
|
|
120
|
+
chunkGraph,
|
|
121
|
+
_runtimeRequirements,
|
|
122
|
+
this
|
|
123
|
+
);
|
|
124
|
+
|
|
106
125
|
const { linkPreload, linkPrefetch, createStylesheet, linkInsert } =
|
|
107
126
|
CssLoadingRuntimeModule.getCompilationHooks(compilation);
|
|
108
127
|
|
|
@@ -157,7 +176,28 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
157
176
|
",\n"
|
|
158
177
|
)
|
|
159
178
|
)}\n}`;
|
|
179
|
+
// The url is read through a thunk so a runtime carrying many stylesheets builds
|
|
180
|
+
// only the one it loads.
|
|
181
|
+
/**
|
|
182
|
+
* @param {string} id expression naming the chunk whose stylesheet is wanted
|
|
183
|
+
* @returns {string} expression evaluating to its url
|
|
184
|
+
*/
|
|
185
|
+
const cssUrl = (id) =>
|
|
186
|
+
cssUrls === undefined || cssUrls === null
|
|
187
|
+
? `${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(${id})`
|
|
188
|
+
: `cssUrls[${id}]()`;
|
|
160
189
|
return Template.asString([
|
|
190
|
+
...(cssUrls
|
|
191
|
+
? [
|
|
192
|
+
`${cst} cssUrls = {\n${Template.indent(
|
|
193
|
+
Array.from(
|
|
194
|
+
cssUrls,
|
|
195
|
+
([id, url]) =>
|
|
196
|
+
`${JSON.stringify(String(id))}: ${runtimeTemplate.returningFunction(url)}`
|
|
197
|
+
).join(",\n")
|
|
198
|
+
)}\n};`
|
|
199
|
+
]
|
|
200
|
+
: []),
|
|
161
201
|
"// object to store loaded and loading chunks",
|
|
162
202
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
163
203
|
"// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
|
|
@@ -277,7 +317,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
277
317
|
"promises.push(installedChunkData[2] = promise);",
|
|
278
318
|
"",
|
|
279
319
|
"// start chunk loading",
|
|
280
|
-
`${cst} url = ${
|
|
320
|
+
`${cst} url = ${cssUrl("chunkId")};`,
|
|
281
321
|
"// create error before stack unwound to get useful stacktrace later",
|
|
282
322
|
`${cst} error = new Error();`,
|
|
283
323
|
`${cst} loadingEnded = ${runtimeTemplate.basicFunction(
|
|
@@ -328,7 +368,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
328
368
|
`Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
|
|
329
369
|
"[{ readFile }, { URL }]",
|
|
330
370
|
[
|
|
331
|
-
`readFile(
|
|
371
|
+
`readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
|
|
332
372
|
"err, content",
|
|
333
373
|
[
|
|
334
374
|
`if (!err) ${runtimeTemplate.cssServerStyleRegistry()}["chunk-" + chunkId] = content;`,
|
|
@@ -383,10 +423,23 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
383
423
|
"}",
|
|
384
424
|
'link.rel = "prefetch";',
|
|
385
425
|
'link.as = "style";',
|
|
386
|
-
`link.href = ${
|
|
426
|
+
`link.href = ${cssUrl("chunkId")};`
|
|
387
427
|
]),
|
|
388
428
|
chunk
|
|
389
429
|
),
|
|
430
|
+
dedupePrefetch
|
|
431
|
+
? Template.asString([
|
|
432
|
+
// Chrome re-requests a resource when a prefetch link is added
|
|
433
|
+
// after it was already (pre)loaded via markup; skip in that case.
|
|
434
|
+
`${cst} links = document.getElementsByTagName("link");`,
|
|
435
|
+
`for(${lt} i = 0; i < links.length; i++) {`,
|
|
436
|
+
Template.indent([
|
|
437
|
+
`${cst} l = links[i];`,
|
|
438
|
+
'if(l.href === link.href && (l.rel === "prefetch" || l.rel === "preload")) return;'
|
|
439
|
+
]),
|
|
440
|
+
"}"
|
|
441
|
+
])
|
|
442
|
+
: "",
|
|
390
443
|
"document.head.appendChild(link);"
|
|
391
444
|
]),
|
|
392
445
|
"}"
|
|
@@ -419,7 +472,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
419
472
|
"}",
|
|
420
473
|
'link.rel = "preload";',
|
|
421
474
|
'link.as = "style";',
|
|
422
|
-
`link.href = ${
|
|
475
|
+
`link.href = ${cssUrl("chunkId")};`,
|
|
423
476
|
crossOriginLoading
|
|
424
477
|
? crossOriginLoading === "use-credentials"
|
|
425
478
|
? 'link.crossOrigin = "use-credentials";'
|
|
@@ -499,7 +552,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
499
552
|
// best-effort: a non-file publicPath (e.g. a CDN) can't be read from disk, so skip
|
|
500
553
|
"try {",
|
|
501
554
|
Template.indent([
|
|
502
|
-
`readFile(
|
|
555
|
+
`readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
|
|
503
556
|
"err, content",
|
|
504
557
|
[
|
|
505
558
|
"if (!err) registry[key] = content;",
|
|
@@ -523,8 +576,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
523
576
|
"// Read CSS removed chunks from update manifest",
|
|
524
577
|
`${cst} cssRemovedChunks = css && css.r;`,
|
|
525
578
|
`chunkIds.forEach(${runtimeTemplate.basicFunction("chunkId", [
|
|
526
|
-
`${cst}
|
|
527
|
-
`${cst} url = ${RuntimeGlobals.publicPath} + filename;`,
|
|
579
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
528
580
|
`${cst} oldTag = loadStylesheet(chunkId, url);`,
|
|
529
581
|
`if(!oldTag && !${withHmr} ) return;`,
|
|
530
582
|
"// Skip if CSS was removed",
|
|
@@ -577,13 +629,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
577
629
|
}
|
|
578
630
|
|
|
579
631
|
CssLoadingRuntimeModule.getCompilationHooks = createHooksRegistry(
|
|
580
|
-
|
|
581
|
-
/** @type {CssLoadingRuntimeModulePluginHooks} */ ({
|
|
582
|
-
createStylesheet: new SyncWaterfallHook(["source", "chunk"]),
|
|
583
|
-
linkPreload: new SyncWaterfallHook(["source", "chunk"]),
|
|
584
|
-
linkPrefetch: new SyncWaterfallHook(["source", "chunk"]),
|
|
585
|
-
linkInsert: new SyncWaterfallHook(["source", "chunk"])
|
|
586
|
-
})
|
|
632
|
+
createCompilationHooks
|
|
587
633
|
);
|
|
588
634
|
|
|
589
635
|
module.exports = CssLoadingRuntimeModule;
|
package/lib/css/CssModule.js
CHANGED
|
@@ -8,15 +8,18 @@
|
|
|
8
8
|
const NormalModule = require("../NormalModule");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
/** @import { CssData } from "../DependencyTemplate" */
|
|
12
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
13
|
+
/**
|
|
14
|
+
* @import {
|
|
15
|
+
* NormalModuleBuildInfo,
|
|
16
|
+
* NormalModuleCreateData
|
|
17
|
+
* } from "../NormalModule"
|
|
18
|
+
*/
|
|
19
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
17
20
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectDeserializerContext */
|
|
18
21
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectSerializerContext */
|
|
19
|
-
/** @
|
|
22
|
+
/** @import { CssParserExportType } from "../../declarations/WebpackOptions" */
|
|
20
23
|
|
|
21
24
|
/** @typedef {string | undefined} CssLayer */
|
|
22
25
|
/** @typedef {string | undefined} Supports */
|