@depup/webpack 5.111.1-depup.1 → 5.112.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 +4 -7
- package/changes.json +3 -15
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +224 -106
- package/lib/Compiler.js +19 -19
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +8 -8
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +36 -22
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +8 -8
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +8 -10
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +144 -48
- package/lib/config/getClaimedAssetTypes.js +21 -13
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +36 -25
- package/lib/context/ContextModuleFactory.js +13 -10
- package/lib/context/ContextReplacementPlugin.js +3 -3
- package/lib/css/CssGenerator.js +38 -31
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +682 -291
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6985 -5125
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +52 -19
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +20 -18
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +4 -4
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
- package/lib/{util → graph}/findGraphRoots.js +14 -8
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +31 -21
- package/lib/html/HtmlGenerator.js +107 -43
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +172 -76
- package/lib/html/HtmlParser.js +503 -153
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +2 -1
- package/lib/html/htmlMinify.js +111 -41
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +303 -97
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +17 -17
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +440 -211
- package/lib/javascript/JavascriptParser.js +220 -134
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +10 -10
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +160 -166
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +31 -21
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +16 -14
- package/lib/{Module.js → module/Module.js} +119 -51
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +229 -214
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
- package/lib/optimize/SplitChunksPlugin.js +713 -155
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +65 -44
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +47 -16
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +349 -44
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +94 -15
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +294 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +4 -1
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +49 -38
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +19355 -13873
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/conventions.js +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -9,27 +9,31 @@ const {
|
|
|
9
9
|
CSS_TYPE,
|
|
10
10
|
HTML_TYPE,
|
|
11
11
|
JAVASCRIPT_TYPE
|
|
12
|
-
} = require("
|
|
13
|
-
const ResourceHintPlugin = require("
|
|
14
|
-
const ResourceHintRuntimeModule = require("
|
|
15
|
-
const makeSerializable = require("
|
|
16
|
-
const memoize = require("
|
|
17
|
-
const ModuleDependency = require("
|
|
12
|
+
} = require("../../module/ModuleSourceTypeConstants");
|
|
13
|
+
const ResourceHintPlugin = require("../../prefetch/ResourceHintPlugin");
|
|
14
|
+
const ResourceHintRuntimeModule = require("../../prefetch/ResourceHintRuntimeModule");
|
|
15
|
+
const makeSerializable = require("../../util/makeSerializable");
|
|
16
|
+
const memoize = require("../../util/memoize");
|
|
17
|
+
const ModuleDependency = require("../core/ModuleDependency");
|
|
18
18
|
|
|
19
19
|
// only the template needs it, and that runs only for a real html module
|
|
20
|
-
const getHtmlGenerator = memoize(() => require("
|
|
20
|
+
const getHtmlGenerator = memoize(() => require("../../html/HtmlGenerator"));
|
|
21
|
+
// only read when a page carries stylesheets, and it drags the css subsystem in
|
|
22
|
+
const getCssModulesPlugin = memoize(() =>
|
|
23
|
+
require("../../css/CssModulesPlugin")
|
|
24
|
+
);
|
|
21
25
|
|
|
22
26
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
23
|
-
/** @import Chunk from "
|
|
24
|
-
/** @import ChunkGraph from "
|
|
25
|
-
/** @import Dependency from "
|
|
26
|
-
/** @import { DependencyTemplateContext } from "
|
|
27
|
-
/** @import Entrypoint from "
|
|
28
|
-
/** @import { Range } from "
|
|
27
|
+
/** @import Chunk from "../../graph/Chunk" */
|
|
28
|
+
/** @import ChunkGraph from "../../graph/ChunkGraph" */
|
|
29
|
+
/** @import Dependency, { DependencyKinds } from "../../graph/Dependency" */
|
|
30
|
+
/** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
|
|
31
|
+
/** @import Entrypoint from "../../graph/Entrypoint" */
|
|
32
|
+
/** @import { Range } from "../../javascript/JavascriptParser" */
|
|
29
33
|
/** @typedef {"script" | "script-module" | "modulepreload" | "stylesheet" | "html" | "preload" | "prefetch"} HtmlEntryElementKind */
|
|
30
34
|
|
|
31
|
-
/** @typedef {import("
|
|
32
|
-
/** @typedef {import("
|
|
35
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectDeserializerContext */
|
|
36
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectSerializerContext */
|
|
33
37
|
|
|
34
38
|
class HtmlEntryDependency extends ModuleDependency {
|
|
35
39
|
/**
|
|
@@ -193,11 +197,11 @@ const getEntrypointChunksInLoadOrder = (entrypoint) => {
|
|
|
193
197
|
|
|
194
198
|
/** @type {Set<Chunk>} */
|
|
195
199
|
const chunksLoadedByAncestorTags = new Set();
|
|
196
|
-
/** @type {Set<import("
|
|
200
|
+
/** @type {Set<import("../../graph/ChunkGroup")>} */
|
|
197
201
|
const visitedGroups = new Set();
|
|
198
202
|
/**
|
|
199
203
|
* Collects the chunks an ancestor entry's own tags already load.
|
|
200
|
-
* @param {import("
|
|
204
|
+
* @param {import("../../graph/ChunkGroup")} group chunk group to walk up from
|
|
201
205
|
* @returns {void}
|
|
202
206
|
*/
|
|
203
207
|
const walk = (group) => {
|
|
@@ -296,83 +300,6 @@ const chunkHasCss = (chunk, chunkGraph) =>
|
|
|
296
300
|
chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_IMPORT_TYPE)
|
|
297
301
|
);
|
|
298
302
|
|
|
299
|
-
/**
|
|
300
|
-
* Deterministic tie-break key for CSS link ordering. `chunk.name` and
|
|
301
|
-
* `chunk.id` are both stable strings (when present); one of them is set for
|
|
302
|
-
* every chunk webpack emits. We can't rely on `Array.prototype.sort` being
|
|
303
|
-
* stable — webpack still supports Node 10.13 where V8's sort is not guaranteed
|
|
304
|
-
* stable for arrays larger than ten elements — so any time
|
|
305
|
-
* `firstCssModulePostOrderIndex` returns the same value for two chunks (most
|
|
306
|
-
* commonly when several chunks have no reachable CSS module in the entrypoint's
|
|
307
|
-
* dependency walk and all map to `Infinity`) this key picks the canonical order.
|
|
308
|
-
* Computed once per chunk when building the sort array rather than per
|
|
309
|
-
* comparison.
|
|
310
|
-
* @param {Chunk} chunk chunk
|
|
311
|
-
* @returns {string} the tie-break key
|
|
312
|
-
*/
|
|
313
|
-
const cssChunkSortKey = (chunk) =>
|
|
314
|
-
`${chunk.name || ""} ${
|
|
315
|
-
chunk.id === null || chunk.id === undefined ? "" : chunk.id
|
|
316
|
-
}`;
|
|
317
|
-
|
|
318
|
-
/**
|
|
319
|
-
* Sort comparator for the CSS sibling emission order. Direct subtraction
|
|
320
|
-
* would yield `NaN` when both indices are `Infinity` (the documented
|
|
321
|
-
* fallback for chunks whose CSS modules the entrypoint's walk never
|
|
322
|
-
* reaches), and `Array#sort` doesn't promise stable ordering on the legacy
|
|
323
|
-
* Node 10 targets this repo still supports — so the tie-breaker must always
|
|
324
|
-
* run when the indices match, including the `Infinity === Infinity` case.
|
|
325
|
-
* @param {{ index: number, key: string }} a first entry
|
|
326
|
-
* @param {{ index: number, key: string }} b second entry
|
|
327
|
-
* @returns {-1 | 0 | 1} sort order
|
|
328
|
-
*/
|
|
329
|
-
const compareCssChunkOrder = (a, b) => {
|
|
330
|
-
if (a.index < b.index) return -1;
|
|
331
|
-
if (a.index > b.index) return 1;
|
|
332
|
-
if (a.key < b.key) return -1;
|
|
333
|
-
if (a.key > b.key) return 1;
|
|
334
|
-
return 0;
|
|
335
|
-
};
|
|
336
|
-
|
|
337
|
-
const CSS_SOURCE_TYPES = [CSS_TYPE, CSS_IMPORT_TYPE];
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* Smallest post-order index among the CSS modules of a chunk, taken
|
|
341
|
-
* from the entrypoint's view of the dependency graph. Used to sort
|
|
342
|
-
* sibling CSS chunks so they appear in source import order in the
|
|
343
|
-
* extracted HTML — `entrypoint.chunks` itself does not give that
|
|
344
|
-
* ordering for arbitrary splitChunks layouts. Considers both
|
|
345
|
-
* `CSS_TYPE` and `CSS_IMPORT_TYPE` modules so a chunk made up
|
|
346
|
-
* exclusively of `@import` placeholder modules (e.g. when splitChunks
|
|
347
|
-
* separates them from their target CSS) still sorts by its true
|
|
348
|
-
* source position rather than collapsing to `Infinity` and relying on
|
|
349
|
-
* the chunk-name tie-breaker.
|
|
350
|
-
* @param {Chunk} chunk chunk
|
|
351
|
-
* @param {Entrypoint} entrypoint entrypoint the chunk belongs to
|
|
352
|
-
* @param {ChunkGraph} chunkGraph chunk graph
|
|
353
|
-
* @returns {number} the lowest post-order index of any CSS or
|
|
354
|
-
* CSS-import module in the chunk, or `Number.POSITIVE_INFINITY` when
|
|
355
|
-
* no such module has a defined index (e.g. for a module the
|
|
356
|
-
* entrypoint never reached on its own dependency walk — runtime-only
|
|
357
|
-
* modules, modules reached via `dependOn`, etc.) so such chunks sort
|
|
358
|
-
* last among CSS chunks
|
|
359
|
-
*/
|
|
360
|
-
const firstCssModulePostOrderIndex = (chunk, entrypoint, chunkGraph) => {
|
|
361
|
-
let min = Number.POSITIVE_INFINITY;
|
|
362
|
-
for (const sourceType of CSS_SOURCE_TYPES) {
|
|
363
|
-
const modules = chunkGraph.getChunkModulesIterableBySourceType(
|
|
364
|
-
chunk,
|
|
365
|
-
sourceType
|
|
366
|
-
);
|
|
367
|
-
if (!modules) continue;
|
|
368
|
-
for (const module of modules) {
|
|
369
|
-
const idx = entrypoint.getModulePostOrderIndex(module);
|
|
370
|
-
if (idx !== undefined && idx < min) min = idx;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return min;
|
|
374
|
-
};
|
|
375
|
-
|
|
376
303
|
/**
|
|
377
304
|
* Build a fresh `<link rel="stylesheet" href="…">` for a CSS chunk that
|
|
378
305
|
* was pulled in by a `<script src>` entry — the originating tag was a
|
|
@@ -553,7 +480,7 @@ const polyfilledSources = new WeakSet();
|
|
|
553
480
|
* @property {string} entryName name of the entry this page loads
|
|
554
481
|
* @property {Entrypoint} entrypoint the entrypoint
|
|
555
482
|
* @property {"html" | "js"} hostType `"html"` when the entry has an extracted HTML page; `"js"` when a JS-only entry is being consulted (SSR framework case)
|
|
556
|
-
* @property {import("
|
|
483
|
+
* @property {import("../../Compilation")} compilation the compilation
|
|
557
484
|
* @property {{ rel: "modulepreload" | "preload" | "prefetch", chunk: string, hostChunks: string[] }[]} defaultHints the auto initial-graph hints (`chunk` / `hostChunks` name the referencing chunk — Vite's `hostId`)
|
|
558
485
|
*/
|
|
559
486
|
|
|
@@ -592,7 +519,7 @@ const buildLinkTag = (rel, attrs) =>
|
|
|
592
519
|
/**
|
|
593
520
|
* The chunks a hint means when it names a page: a page loads no JavaScript of
|
|
594
521
|
* its own, so the hint follows the entries the parser extracted from it.
|
|
595
|
-
* @param {import("
|
|
522
|
+
* @param {import("../../Compilation")} compilation compilation
|
|
596
523
|
* @param {Chunk} chunk chunk a hint resolved to
|
|
597
524
|
* @returns {Chunk[]} the chunks to hint at
|
|
598
525
|
*/
|
|
@@ -615,7 +542,7 @@ const resolvePageChunk = (compilation, chunk) => {
|
|
|
615
542
|
if (modules === undefined) return chunks.length === 0 ? [chunk] : chunks;
|
|
616
543
|
for (const module of modules) {
|
|
617
544
|
const { htmlEntries } =
|
|
618
|
-
/** @type {import("
|
|
545
|
+
/** @type {import("../../html/HtmlModule").HtmlModuleBuildInfo} */ (
|
|
619
546
|
module.buildInfo
|
|
620
547
|
) || {};
|
|
621
548
|
if (!htmlEntries) continue;
|
|
@@ -636,7 +563,7 @@ const resolvePageChunk = (compilation, chunk) => {
|
|
|
636
563
|
* resolved with the final hash and public path), an `href` is used verbatim, and
|
|
637
564
|
* `preconnect`/`dns-prefetch` use only `href`. Unknown chunk/entry names are skipped.
|
|
638
565
|
* @param {HtmlResourceHint} desc the descriptor
|
|
639
|
-
* @param {{ compilation: import("
|
|
566
|
+
* @param {{ compilation: import("../../Compilation"), chunkGraph: ChunkGraph, chunkByName: Map<string, Chunk>, outputCrossOrigin: string, integrityOn: boolean }} ctx resolution context
|
|
640
567
|
* @returns {string[]} the resolved tags
|
|
641
568
|
*/
|
|
642
569
|
const resolveResourceHint = (desc, ctx) => {
|
|
@@ -837,10 +764,6 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
837
764
|
compilation.outputOptions.module === true ? ' type="module"' : "";
|
|
838
765
|
|
|
839
766
|
const entryContentHashType = isStylesheet ? "css" : "javascript";
|
|
840
|
-
const inlineOption =
|
|
841
|
-
typeof htmlOption === "object" ? htmlOption.inline : undefined;
|
|
842
|
-
/** @type {RegExp[] | null} */
|
|
843
|
-
const inlinePatterns = Array.isArray(inlineOption) ? inlineOption : null;
|
|
844
767
|
/**
|
|
845
768
|
* @param {Chunk} chunk chunk to test
|
|
846
769
|
* @param {"javascript" | "css"} contentType which asset of the chunk is being emitted
|
|
@@ -850,25 +773,18 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
850
773
|
// A `<link rel="modulepreload">` is a void fetch hint — inlining it would
|
|
851
774
|
// emit an unclosed, executing `<script>`.
|
|
852
775
|
if (dep.elementKind === "modulepreload") return false;
|
|
776
|
+
if (!getHtmlGenerator().canInlineChunk(compilation, chunk)) {
|
|
777
|
+
return false;
|
|
778
|
+
}
|
|
853
779
|
if (dep.forceInline) return true;
|
|
854
|
-
|
|
855
|
-
if (inlineOption === true) return true;
|
|
856
|
-
// `"script"`/`"style"` inline by asset type, not chunk name — a chunk's
|
|
857
|
-
// JS and CSS share a name, so only the emitted `contentType` tells them
|
|
858
|
-
// apart.
|
|
859
|
-
if (inlineOption === "script") return contentType === "javascript";
|
|
860
|
-
if (inlineOption === "style") return contentType === "css";
|
|
861
|
-
const name = chunk.name || String(chunk.id);
|
|
862
|
-
return /** @type {RegExp[]} */ (inlinePatterns).some((re) =>
|
|
863
|
-
re.test(name)
|
|
864
|
-
);
|
|
780
|
+
return getHtmlGenerator().isChunkInlined(htmlOption, chunk, contentType);
|
|
865
781
|
};
|
|
866
782
|
|
|
867
783
|
// Only inline when the HTML module is emitted as a standalone page (extract mode).
|
|
868
784
|
// If it's exported as a JS string, sentinels would end up embedded in the JS chunk.
|
|
869
785
|
const isExtractedHtml = chunkGraph
|
|
870
786
|
.getModuleSourceTypes(
|
|
871
|
-
/** @type {import("
|
|
787
|
+
/** @type {import("../../module/Module")} */ (templateContext.module)
|
|
872
788
|
)
|
|
873
789
|
.has("html");
|
|
874
790
|
const entryInlined =
|
|
@@ -1029,8 +945,8 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1029
945
|
// mini-css-extract#959 symptom. The order is re-derived from the
|
|
1030
946
|
// entrypoint's module post-order index, which follows the dependency
|
|
1031
947
|
// walk and so the source's import order.
|
|
1032
|
-
/** @type {
|
|
1033
|
-
const
|
|
948
|
+
/** @type {Chunk[]} */
|
|
949
|
+
const cssChunks = [];
|
|
1034
950
|
/** @type {Chunk[]} */
|
|
1035
951
|
const jsChunks = [];
|
|
1036
952
|
for (let i = 0; i < orderedChunks.length - 1; i++) {
|
|
@@ -1038,15 +954,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1038
954
|
const hasCss = chunkHasCss(chunk, chunkGraph);
|
|
1039
955
|
const hasJs = chunkHasJs(chunk, chunkGraph);
|
|
1040
956
|
if (hasCss) {
|
|
1041
|
-
|
|
1042
|
-
chunk,
|
|
1043
|
-
index: firstCssModulePostOrderIndex(
|
|
1044
|
-
chunk,
|
|
1045
|
-
entrypoint,
|
|
1046
|
-
chunkGraph
|
|
1047
|
-
),
|
|
1048
|
-
key: cssChunkSortKey(chunk)
|
|
1049
|
-
});
|
|
957
|
+
cssChunks.push(chunk);
|
|
1050
958
|
}
|
|
1051
959
|
// Anything not CSS-only stays on the JS lane in `orderedChunks` order,
|
|
1052
960
|
// preserving the runtime-first invariant. A chunk emitting neither
|
|
@@ -1057,17 +965,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1057
965
|
// ordering so its `<link>` lands in the right cascade position
|
|
1058
966
|
// relative to the sibling CSS chunks.
|
|
1059
967
|
if (chunkHasCss(entryChunk, chunkGraph)) {
|
|
1060
|
-
|
|
1061
|
-
chunk: entryChunk,
|
|
1062
|
-
index: firstCssModulePostOrderIndex(
|
|
1063
|
-
entryChunk,
|
|
1064
|
-
entrypoint,
|
|
1065
|
-
chunkGraph
|
|
1066
|
-
),
|
|
1067
|
-
key: cssChunkSortKey(entryChunk)
|
|
1068
|
-
});
|
|
968
|
+
cssChunks.push(entryChunk);
|
|
1069
969
|
}
|
|
1070
|
-
cssChunkOrder.
|
|
970
|
+
const cssChunkOrder = getCssModulesPlugin().getCssChunksInCascadeOrder(
|
|
971
|
+
cssChunks,
|
|
972
|
+
entrypoint,
|
|
973
|
+
chunkGraph
|
|
974
|
+
);
|
|
1071
975
|
// Stylesheets land in `<head>`. A classic blocking script pins them
|
|
1072
976
|
// ahead of itself, so it never awaits later CSS; with only `defer` and
|
|
1073
977
|
// module scripts they go last, which starts the script fetches earlier.
|
|
@@ -1080,7 +984,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1080
984
|
? dep.cssAnchor
|
|
1081
985
|
: dep.tagStart;
|
|
1082
986
|
cssHtml = cssChunkOrder
|
|
1083
|
-
.map((
|
|
987
|
+
.map((chunk) => buildSibling(chunk, "css"))
|
|
1084
988
|
.join("");
|
|
1085
989
|
for (const chunk of jsChunks) {
|
|
1086
990
|
siblings.push(buildSibling(chunk, "javascript"));
|
|
@@ -1209,7 +1113,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1209
1113
|
// `<script>` entry — that's what users key on.
|
|
1210
1114
|
let entryName = dep.entryName;
|
|
1211
1115
|
for (const c of chunkGraph.getModuleChunks(
|
|
1212
|
-
/** @type {import("
|
|
1116
|
+
/** @type {import("../../module/Module")} */ (
|
|
1117
|
+
templateContext.module
|
|
1118
|
+
)
|
|
1213
1119
|
)) {
|
|
1214
1120
|
if (c.name) {
|
|
1215
1121
|
entryName = c.name;
|
|
@@ -1270,7 +1176,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1270
1176
|
const asAttr =
|
|
1271
1177
|
md.asAttribute ||
|
|
1272
1178
|
ResourceHintRuntimeModule.guessAsAttribute(
|
|
1273
|
-
/** @type {import("
|
|
1179
|
+
/** @type {import("../url/URLDependency")} */ (md).request || ""
|
|
1274
1180
|
);
|
|
1275
1181
|
const typeAttr = md.typeAttribute;
|
|
1276
1182
|
const mediaAttr = md.mediaAttribute;
|
|
@@ -1327,9 +1233,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1327
1233
|
}
|
|
1328
1234
|
};
|
|
1329
1235
|
|
|
1330
|
-
makeSerializable(
|
|
1331
|
-
HtmlEntryDependency,
|
|
1236
|
+
makeSerializable(HtmlEntryDependency, [
|
|
1237
|
+
"webpack/lib/dependencies/html/HtmlEntryDependency",
|
|
1238
|
+
// TODO in the next major release: remove, they restore pre-move cache packs
|
|
1332
1239
|
"webpack/lib/dependencies/HtmlEntryDependency"
|
|
1333
|
-
);
|
|
1240
|
+
]);
|
|
1241
|
+
|
|
1242
|
+
/** @type {Set<keyof DependencyKinds>} */
|
|
1243
|
+
HtmlEntryDependency.KINDS = new Set([...ModuleDependency.KINDS, "html-entry"]);
|
|
1334
1244
|
|
|
1335
1245
|
module.exports = HtmlEntryDependency;
|
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const { HTML_TYPE } = require("
|
|
8
|
-
const makeSerializable = require("
|
|
9
|
-
const ModuleDependency = require("
|
|
7
|
+
const { HTML_TYPE } = require("../../module/ModuleSourceTypeConstants");
|
|
8
|
+
const makeSerializable = require("../../util/makeSerializable");
|
|
9
|
+
const ModuleDependency = require("../core/ModuleDependency");
|
|
10
10
|
|
|
11
11
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
12
|
-
/** @import CodeGenerationResults from "
|
|
13
|
-
/** @import Dependency, { UpdateHashContext } from "
|
|
14
|
-
/** @import { DependencyTemplateContext } from "
|
|
15
|
-
/** @import Module from "
|
|
16
|
-
/** @import { Range } from "
|
|
17
|
-
/** @import Hash from "
|
|
12
|
+
/** @import CodeGenerationResults from "../../module/CodeGenerationResults" */
|
|
13
|
+
/** @import Dependency, { UpdateHashContext } from "../../graph/Dependency" */
|
|
14
|
+
/** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
|
|
15
|
+
/** @import Module from "../../module/Module" */
|
|
16
|
+
/** @import { Range } from "../../javascript/JavascriptParser" */
|
|
17
|
+
/** @import Hash from "../../util/Hash" */
|
|
18
18
|
|
|
19
19
|
// One pass over the source: each char is replaced once and replacements aren't
|
|
20
20
|
// re-scanned, so this matches the `&`-first sequential escape chain exactly.
|
|
@@ -98,9 +98,10 @@ HtmlInlineHtmlDependency.Template = class HtmlInlineHtmlDependencyTemplate exten
|
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
makeSerializable(
|
|
102
|
-
HtmlInlineHtmlDependency,
|
|
101
|
+
makeSerializable(HtmlInlineHtmlDependency, [
|
|
102
|
+
"webpack/lib/dependencies/html/HtmlInlineHtmlDependency",
|
|
103
|
+
// TODO in the next major release: remove, they restore pre-move cache packs
|
|
103
104
|
"webpack/lib/dependencies/HtmlInlineHtmlDependency"
|
|
104
|
-
);
|
|
105
|
+
]);
|
|
105
106
|
|
|
106
107
|
module.exports = HtmlInlineHtmlDependency;
|
package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js}
RENAMED
|
@@ -4,27 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const makeSerializable = require("
|
|
8
|
-
const memoize = require("
|
|
9
|
-
const ModuleDependency = require("
|
|
7
|
+
const makeSerializable = require("../../util/makeSerializable");
|
|
8
|
+
const memoize = require("../../util/memoize");
|
|
9
|
+
const ModuleDependency = require("../core/ModuleDependency");
|
|
10
10
|
|
|
11
11
|
// only the template needs it, and that runs only for a real html module
|
|
12
|
-
const getHtmlGenerator = memoize(() => require("
|
|
12
|
+
const getHtmlGenerator = memoize(() => require("../../html/HtmlGenerator"));
|
|
13
13
|
|
|
14
14
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
15
|
-
/** @import Chunk from "
|
|
16
|
-
/** @import Dependency from "
|
|
17
|
-
/** @import { DependencyTemplateContext } from "
|
|
18
|
-
/** @import Entrypoint from "
|
|
19
|
-
/** @import { Range } from "
|
|
20
|
-
/** @typedef {import("
|
|
21
|
-
/** @typedef {import("
|
|
15
|
+
/** @import Chunk from "../../graph/Chunk" */
|
|
16
|
+
/** @import Dependency from "../../graph/Dependency" */
|
|
17
|
+
/** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
|
|
18
|
+
/** @import Entrypoint from "../../graph/Entrypoint" */
|
|
19
|
+
/** @import { Range } from "../../javascript/JavascriptParser" */
|
|
20
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<[number, Range, string, string, Range | undefined, boolean]>} ObjectDeserializerContext */
|
|
21
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<[number, Range, string, string, Range | undefined, boolean]>} ObjectSerializerContext */
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Represents an inline `<script>...</script>` block in an HTML module. The
|
|
25
25
|
* tag's body is bundled as its own entry chunk — the same pipeline that
|
|
26
26
|
* processes `<script src>` — and the inline body is replaced with a
|
|
27
|
-
* `src` attribute pointing at the emitted chunk URL.
|
|
27
|
+
* `src` attribute pointing at the emitted chunk URL. A tag sharing an
|
|
28
|
+
* earlier tag's entry carries a `removeRange` and is dropped instead.
|
|
28
29
|
*/
|
|
29
30
|
class HtmlInlineScriptDependency extends ModuleDependency {
|
|
30
31
|
/**
|
|
@@ -34,8 +35,18 @@ class HtmlInlineScriptDependency extends ModuleDependency {
|
|
|
34
35
|
* @param {Range} contentRange range of the inline JS body (between `<script>` and `</script>`)
|
|
35
36
|
* @param {string} entryName name of the entry the inline JS is bundled into
|
|
36
37
|
* @param {string=} category dependency category used for resolving and grouping
|
|
38
|
+
* @param {Range=} removeRange range of the whole element, when the tag is dropped
|
|
39
|
+
* @param {boolean=} forceInline `<!-- webpackInline: true -->` was set before this tag
|
|
37
40
|
*/
|
|
38
|
-
constructor(
|
|
41
|
+
constructor(
|
|
42
|
+
request,
|
|
43
|
+
insertPos,
|
|
44
|
+
contentRange,
|
|
45
|
+
entryName,
|
|
46
|
+
category,
|
|
47
|
+
removeRange,
|
|
48
|
+
forceInline
|
|
49
|
+
) {
|
|
39
50
|
super(request);
|
|
40
51
|
/** @type {number} */
|
|
41
52
|
this.insertPos = insertPos;
|
|
@@ -45,6 +56,10 @@ class HtmlInlineScriptDependency extends ModuleDependency {
|
|
|
45
56
|
this.entryName = entryName;
|
|
46
57
|
/** @type {string} */
|
|
47
58
|
this._category = category || "commonjs";
|
|
59
|
+
/** @type {Range | undefined} */
|
|
60
|
+
this.removeRange = removeRange;
|
|
61
|
+
/** @type {boolean} */
|
|
62
|
+
this.forceInline = forceInline === true;
|
|
48
63
|
}
|
|
49
64
|
|
|
50
65
|
get type() {
|
|
@@ -64,7 +79,9 @@ class HtmlInlineScriptDependency extends ModuleDependency {
|
|
|
64
79
|
.write(this.insertPos)
|
|
65
80
|
.write(this.contentRange)
|
|
66
81
|
.write(this.entryName)
|
|
67
|
-
.write(this._category)
|
|
82
|
+
.write(this._category)
|
|
83
|
+
.write(this.removeRange)
|
|
84
|
+
.write(this.forceInline);
|
|
68
85
|
super.serialize(context);
|
|
69
86
|
}
|
|
70
87
|
|
|
@@ -81,7 +98,11 @@ class HtmlInlineScriptDependency extends ModuleDependency {
|
|
|
81
98
|
this.entryName = c2.read();
|
|
82
99
|
const c3 = c2.rest;
|
|
83
100
|
this._category = c3.read();
|
|
84
|
-
|
|
101
|
+
const c4 = c3.rest;
|
|
102
|
+
this.removeRange = c4.read();
|
|
103
|
+
const c5 = c4.rest;
|
|
104
|
+
this.forceInline = c5.read();
|
|
105
|
+
super.deserialize(c5.rest);
|
|
85
106
|
}
|
|
86
107
|
}
|
|
87
108
|
|
|
@@ -96,8 +117,12 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
|
|
|
96
117
|
* @returns {void}
|
|
97
118
|
*/
|
|
98
119
|
apply(dependency, source, templateContext) {
|
|
99
|
-
const { runtimeTemplate } = templateContext;
|
|
120
|
+
const { runtimeTemplate, chunkGraph, module } = templateContext;
|
|
100
121
|
const dep = /** @type {HtmlInlineScriptDependency} */ (dependency);
|
|
122
|
+
if (dep.removeRange) {
|
|
123
|
+
source.replace(dep.removeRange[0], dep.removeRange[1] - 1, "");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
101
126
|
const compilation = runtimeTemplate.compilation;
|
|
102
127
|
const entrypoint = /** @type {Entrypoint | undefined} */ (
|
|
103
128
|
compilation.entrypoints.get(dep.entryName)
|
|
@@ -108,6 +133,30 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
|
|
|
108
133
|
|
|
109
134
|
if (entrypoint) {
|
|
110
135
|
const chunk = /** @type {Chunk} */ (entrypoint.getEntrypointChunk());
|
|
136
|
+
// A sentinel only resolves in a page webpack emits; exported as a JS
|
|
137
|
+
// string it would ride along unresolved.
|
|
138
|
+
const isExtractedHtml = chunkGraph
|
|
139
|
+
.getModuleSourceTypes(module)
|
|
140
|
+
.has("html");
|
|
141
|
+
if (
|
|
142
|
+
isExtractedHtml &&
|
|
143
|
+
getHtmlGenerator().canInlineChunk(compilation, chunk) &&
|
|
144
|
+
(dep.forceInline ||
|
|
145
|
+
getHtmlGenerator().isChunkInlined(
|
|
146
|
+
compilation.outputOptions.html,
|
|
147
|
+
chunk,
|
|
148
|
+
"javascript"
|
|
149
|
+
))
|
|
150
|
+
) {
|
|
151
|
+
// The tag stays as written and its body becomes the chunk's code, so
|
|
152
|
+
// the run costs no request.
|
|
153
|
+
source.replace(
|
|
154
|
+
dep.contentRange[0],
|
|
155
|
+
dep.contentRange[1] - 1,
|
|
156
|
+
getHtmlGenerator().makeChunkInlineSentinel(chunk, "javascript")
|
|
157
|
+
);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
111
160
|
// Defer chunk-URL substitution to renderManifest — chunk hashes aren't ready yet.
|
|
112
161
|
url = getHtmlGenerator().makeChunkUrlSentinel(chunk, "javascript");
|
|
113
162
|
}
|
|
@@ -120,9 +169,10 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
|
|
|
120
169
|
}
|
|
121
170
|
};
|
|
122
171
|
|
|
123
|
-
makeSerializable(
|
|
124
|
-
HtmlInlineScriptDependency,
|
|
172
|
+
makeSerializable(HtmlInlineScriptDependency, [
|
|
173
|
+
"webpack/lib/dependencies/html/HtmlInlineScriptDependency",
|
|
174
|
+
// TODO in the next major release: remove, they restore pre-move cache packs
|
|
125
175
|
"webpack/lib/dependencies/HtmlInlineScriptDependency"
|
|
126
|
-
);
|
|
176
|
+
]);
|
|
127
177
|
|
|
128
178
|
module.exports = HtmlInlineScriptDependency;
|
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const { CSS_TEXT_TYPE } = require("
|
|
8
|
-
const makeSerializable = require("
|
|
9
|
-
const ModuleDependency = require("
|
|
7
|
+
const { CSS_TEXT_TYPE } = require("../../module/ModuleSourceTypeConstants");
|
|
8
|
+
const makeSerializable = require("../../util/makeSerializable");
|
|
9
|
+
const ModuleDependency = require("../core/ModuleDependency");
|
|
10
10
|
|
|
11
11
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
12
|
-
/** @import CodeGenerationResults from "
|
|
13
|
-
/** @import Dependency, { UpdateHashContext } from "
|
|
14
|
-
/** @import { DependencyTemplateContext } from "
|
|
15
|
-
/** @import Module from "
|
|
16
|
-
/** @import { Range } from "
|
|
17
|
-
/** @typedef {import("
|
|
18
|
-
/** @typedef {import("
|
|
19
|
-
/** @import Hash from "
|
|
12
|
+
/** @import CodeGenerationResults from "../../module/CodeGenerationResults" */
|
|
13
|
+
/** @import Dependency, { UpdateHashContext } from "../../graph/Dependency" */
|
|
14
|
+
/** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
|
|
15
|
+
/** @import Module from "../../module/Module" */
|
|
16
|
+
/** @import { Range } from "../../javascript/JavascriptParser" */
|
|
17
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<boolean[]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<boolean[]>} ObjectSerializerContext */
|
|
19
|
+
/** @import Hash from "../../util/Hash" */
|
|
20
20
|
|
|
21
21
|
const TRAILING_WHITESPACE_REGEXP = /\s+$/;
|
|
22
22
|
// One pass over the source: each char is replaced once and replacements aren't
|
|
@@ -31,6 +31,18 @@ const ATTR_ESCAPES = { "&": "&", '"': """, "'": "'" };
|
|
|
31
31
|
*/
|
|
32
32
|
const escapeAttrChar = (c) => ATTR_ESCAPES[c];
|
|
33
33
|
|
|
34
|
+
// Character data needs only the two that open markup: `&` starts a character
|
|
35
|
+
// reference and `<` a tag. A CR is written as a reference because §13.2.3.5
|
|
36
|
+
// rewrites a literal one to LF before the tokenizer reads it.
|
|
37
|
+
const TEXT_ESCAPE_REGEXP = /[&<\r]/g;
|
|
38
|
+
/** @type {Record<string, string>} */
|
|
39
|
+
const TEXT_ESCAPES = { "&": "&", "<": "<", "\r": " " };
|
|
40
|
+
/**
|
|
41
|
+
* @param {string} c matched character
|
|
42
|
+
* @returns {string} the HTML-text-escaped entity
|
|
43
|
+
*/
|
|
44
|
+
const escapeTextChar = (c) => TEXT_ESCAPES[c];
|
|
45
|
+
|
|
34
46
|
/**
|
|
35
47
|
* Represents inline CSS in an HTML module — either a `<style>...</style>`
|
|
36
48
|
* block (a stylesheet) or an element's `style="..."` attribute (a CSS
|
|
@@ -47,14 +59,23 @@ class HtmlInlineStyleDependency extends ModuleDependency {
|
|
|
47
59
|
* @param {Range} range range of the inline CSS content (between `<style>` and `</style>`, or the `style` attribute value)
|
|
48
60
|
* @param {boolean=} attribute true when the source is a `style="..."` attribute (a block's contents) rather than a `<style>` block (stylesheet)
|
|
49
61
|
* @param {boolean=} inAttribute true when the range is an attribute value (decoded on parse, so the processed CSS must be re-escaped on write-back); defaults to `attribute` — differs only for attribute values parsed as full stylesheets
|
|
62
|
+
* @param {boolean=} characterData true when the range is a `<style>` body in a foreign (SVG/MathML) subtree, where the content model is character data rather than raw text, so the processed CSS is escaped as text on write-back
|
|
50
63
|
*/
|
|
51
|
-
constructor(
|
|
64
|
+
constructor(
|
|
65
|
+
request,
|
|
66
|
+
range,
|
|
67
|
+
attribute = false,
|
|
68
|
+
inAttribute = attribute,
|
|
69
|
+
characterData = false
|
|
70
|
+
) {
|
|
52
71
|
super(request);
|
|
53
72
|
this.range = range;
|
|
54
73
|
/** @type {boolean} */
|
|
55
74
|
this.attribute = attribute;
|
|
56
75
|
/** @type {boolean} */
|
|
57
76
|
this.inAttribute = inAttribute;
|
|
77
|
+
/** @type {boolean} */
|
|
78
|
+
this.characterData = characterData;
|
|
58
79
|
}
|
|
59
80
|
|
|
60
81
|
get type() {
|
|
@@ -87,6 +108,7 @@ class HtmlInlineStyleDependency extends ModuleDependency {
|
|
|
87
108
|
super.serialize(context);
|
|
88
109
|
context.write(this.attribute);
|
|
89
110
|
context.write(this.inAttribute);
|
|
111
|
+
context.write(this.characterData);
|
|
90
112
|
}
|
|
91
113
|
|
|
92
114
|
/**
|
|
@@ -97,6 +119,7 @@ class HtmlInlineStyleDependency extends ModuleDependency {
|
|
|
97
119
|
super.deserialize(context);
|
|
98
120
|
this.attribute = context.read();
|
|
99
121
|
this.inAttribute = context.read();
|
|
122
|
+
this.characterData = context.read();
|
|
100
123
|
}
|
|
101
124
|
}
|
|
102
125
|
|
|
@@ -134,15 +157,27 @@ HtmlInlineStyleDependency.Template = class HtmlInlineStyleDependencyTemplate ext
|
|
|
134
157
|
cssText = cssText
|
|
135
158
|
.replace(TRAILING_WHITESPACE_REGEXP, "")
|
|
136
159
|
.replace(ATTR_ESCAPE_REGEXP, escapeAttrChar);
|
|
160
|
+
} else {
|
|
161
|
+
// A `<style>` body keeps the whitespace its source ends with: the newline
|
|
162
|
+
// the generator appends to hold a stylesheet's modules apart is no fixed
|
|
163
|
+
// point here, and a page built from an emitted one would gain one a pass.
|
|
164
|
+
if (cssText.endsWith("\n")) cssText = cssText.slice(0, -1);
|
|
165
|
+
if (dep.characterData) {
|
|
166
|
+
// A foreign `<style>` body was entity-decoded before parsing, so the
|
|
167
|
+
// processed CSS is escaped back as text — its newlines stay literal,
|
|
168
|
+
// which an attribute value could not afford.
|
|
169
|
+
cssText = cssText.replace(TEXT_ESCAPE_REGEXP, escapeTextChar);
|
|
170
|
+
}
|
|
137
171
|
}
|
|
138
172
|
|
|
139
173
|
source.replace(dep.range[0], dep.range[1] - 1, cssText);
|
|
140
174
|
}
|
|
141
175
|
};
|
|
142
176
|
|
|
143
|
-
makeSerializable(
|
|
144
|
-
HtmlInlineStyleDependency,
|
|
177
|
+
makeSerializable(HtmlInlineStyleDependency, [
|
|
178
|
+
"webpack/lib/dependencies/html/HtmlInlineStyleDependency",
|
|
179
|
+
// TODO in the next major release: remove, they restore pre-move cache packs
|
|
145
180
|
"webpack/lib/dependencies/HtmlInlineStyleDependency"
|
|
146
|
-
);
|
|
181
|
+
]);
|
|
147
182
|
|
|
148
183
|
module.exports = HtmlInlineStyleDependency;
|