webpack 5.111.0 → 5.112.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 +1 -1
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +237 -138
- package/lib/Compiler.js +23 -24
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -69
- 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 +43 -24
- package/lib/NormalModule.js +3 -2190
- 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 +15 -9
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +61 -38
- 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 +15 -9
- 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 +6 -6
- package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
- package/lib/cache/PackFileCacheStrategy.js +11 -28
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/getLazyHashedEtag.js +3 -5
- 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 +3 -9
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +192 -122
- package/lib/config/getClaimedAssetTypes.js +28 -21
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +13 -4
- 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/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +57 -42
- 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 +700 -311
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +130 -54
- package/lib/css/data.js +7017 -4648
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -17370
- package/lib/debug/ProfilingPlugin.js +55 -23
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
- 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} +176 -44
- 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} +39 -35
- 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} +19 -20
- 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} +34 -18
- 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} +375 -100
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
- 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} +26 -21
- 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} +40 -41
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
- 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} +136 -122
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
- 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} +199 -97
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
- 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 +8 -9
- 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} +125 -243
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
- 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} +126 -107
- 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} +34 -25
- package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
- 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} +46 -54
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
- 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} +207 -129
- 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/errors/ErrorHelpers.js +222 -0
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- 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} +85 -63
- 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} +151 -99
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
- package/lib/{util → graph}/findGraphRoots.js +20 -21
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -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 +34 -26
- package/lib/html/HtmlGenerator.js +168 -125
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +260 -215
- package/lib/html/HtmlParser.js +598 -292
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +23 -1
- package/lib/html/htmlMinify.js +120 -51
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -14062
- 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 +348 -99
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
- 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} +10 -11
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +25 -18
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +458 -256
- package/lib/javascript/JavascriptParser.js +916 -287
- 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 -10946
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +17 -11
- 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 +207 -285
- 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 +27 -2
- package/lib/loaders/LoaderRunner.js +160 -22
- 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} +38 -14
- package/lib/{Module.js → module/Module.js} +122 -54
- 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 +61 -15
- 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 +5 -7
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +305 -309
- 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} +25 -30
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +17 -23
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +21 -15
- package/lib/optimize/MangleExportsPlugin.js +8 -9
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
- 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 +25 -37
- package/lib/optimize/SplitChunksPlugin.js +715 -159
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +25 -30
- 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 +5 -7
- 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 +13 -16
- 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 +7 -9
- 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 +82 -65
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
- 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 +10 -9
- 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 +9 -10
- 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 +5 -7
- 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 +135 -102
- 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 +4 -7
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +19 -19
- package/lib/serialization/ObjectMiddleware.js +77 -49
- 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 +19 -19
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
- 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} +178 -106
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
- package/lib/typescript/TypeScriptPlugin.js +5 -6
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +364 -66
- 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 +32 -151
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -18
- 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/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +295 -103
- 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 +11 -6
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
- 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 +11 -12
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
- 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 +70 -40
- 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 +13915 -8414
- package/lib/ErrorHelpers.js +0 -107
- 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 -71
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1494
- 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
|
|
@@ -498,11 +425,12 @@ const cloneTagWithUrl = (
|
|
|
498
425
|
return isLink ? body : `${body}</script>`;
|
|
499
426
|
};
|
|
500
427
|
|
|
501
|
-
// ES5 `<link rel="modulepreload">` polyfill (Safari <17, Firefox <115,
|
|
502
|
-
//
|
|
503
|
-
// tag's own credentials
|
|
504
|
-
// `.ep` guard makes
|
|
505
|
-
//
|
|
428
|
+
// WHY: an ES5 `<link rel="modulepreload">` polyfill (Safari <17, Firefox <115,
|
|
429
|
+
// …). On a browser without native support, each modulepreload target is fetched
|
|
430
|
+
// with the tag's own credentials and integrity, so the pending module import
|
|
431
|
+
// reuses it. The `.ep` guard makes that idempotent and the observer catches any
|
|
432
|
+
// later-inserted link. Emitted only where the target environment lacks native
|
|
433
|
+
// support.
|
|
506
434
|
const MODULEPRELOAD_POLYFILL = [
|
|
507
435
|
"(function(){",
|
|
508
436
|
'var s=document.createElement("link").relList;',
|
|
@@ -552,7 +480,7 @@ const polyfilledSources = new WeakSet();
|
|
|
552
480
|
* @property {string} entryName name of the entry this page loads
|
|
553
481
|
* @property {Entrypoint} entrypoint the entrypoint
|
|
554
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)
|
|
555
|
-
* @property {import("
|
|
483
|
+
* @property {import("../../Compilation")} compilation the compilation
|
|
556
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`)
|
|
557
485
|
*/
|
|
558
486
|
|
|
@@ -591,7 +519,7 @@ const buildLinkTag = (rel, attrs) =>
|
|
|
591
519
|
/**
|
|
592
520
|
* The chunks a hint means when it names a page: a page loads no JavaScript of
|
|
593
521
|
* its own, so the hint follows the entries the parser extracted from it.
|
|
594
|
-
* @param {import("
|
|
522
|
+
* @param {import("../../Compilation")} compilation compilation
|
|
595
523
|
* @param {Chunk} chunk chunk a hint resolved to
|
|
596
524
|
* @returns {Chunk[]} the chunks to hint at
|
|
597
525
|
*/
|
|
@@ -614,7 +542,7 @@ const resolvePageChunk = (compilation, chunk) => {
|
|
|
614
542
|
if (modules === undefined) return chunks.length === 0 ? [chunk] : chunks;
|
|
615
543
|
for (const module of modules) {
|
|
616
544
|
const { htmlEntries } =
|
|
617
|
-
/** @type {import("
|
|
545
|
+
/** @type {import("../../html/HtmlModule").HtmlModuleBuildInfo} */ (
|
|
618
546
|
module.buildInfo
|
|
619
547
|
) || {};
|
|
620
548
|
if (!htmlEntries) continue;
|
|
@@ -635,7 +563,7 @@ const resolvePageChunk = (compilation, chunk) => {
|
|
|
635
563
|
* resolved with the final hash and public path), an `href` is used verbatim, and
|
|
636
564
|
* `preconnect`/`dns-prefetch` use only `href`. Unknown chunk/entry names are skipped.
|
|
637
565
|
* @param {HtmlResourceHint} desc the descriptor
|
|
638
|
-
* @param {{ compilation: import("
|
|
566
|
+
* @param {{ compilation: import("../../Compilation"), chunkGraph: ChunkGraph, chunkByName: Map<string, Chunk>, outputCrossOrigin: string, integrityOn: boolean }} ctx resolution context
|
|
639
567
|
* @returns {string[]} the resolved tags
|
|
640
568
|
*/
|
|
641
569
|
const resolveResourceHint = (desc, ctx) => {
|
|
@@ -737,10 +665,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
737
665
|
const dep = /** @type {HtmlEntryDependency} */ (dependency);
|
|
738
666
|
const compilation = runtimeTemplate.compilation;
|
|
739
667
|
|
|
740
|
-
// A `type: "html"` link points at another emitted page
|
|
741
|
-
//
|
|
742
|
-
//
|
|
743
|
-
// link loads only itself.
|
|
668
|
+
// A `type: "html"` link points at another emitted page rather than a chunk,
|
|
669
|
+
// so rewrite the attribute to that page's filename and emit no siblings:
|
|
670
|
+
// a page link loads only itself.
|
|
744
671
|
if (dep.elementKind === "html") {
|
|
745
672
|
source.replace(
|
|
746
673
|
dep.range[0],
|
|
@@ -764,21 +691,17 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
764
691
|
const orderedChunks = getEntrypointChunksInLoadOrder(entrypoint);
|
|
765
692
|
const entryChunk = orderedChunks[orderedChunks.length - 1];
|
|
766
693
|
|
|
767
|
-
//
|
|
768
|
-
//
|
|
769
|
-
// `crossorigin`
|
|
770
|
-
// webpack's runtime, which sets `crossOrigin` on chunk-loading scripts,
|
|
771
|
-
// and matches Vite, which emits it on every injected script/stylesheet.
|
|
694
|
+
// Mirrors `output.crossOriginLoading` onto every injected tag, as webpack's
|
|
695
|
+
// runtime does for chunk-loading scripts. Empty when the option is off or
|
|
696
|
+
// the originating tag set `crossorigin` itself, since the author wins.
|
|
772
697
|
const crossOrigin =
|
|
773
698
|
crossOriginLoading && !dep.hasOwnCrossOrigin
|
|
774
699
|
? ` crossorigin="${crossOriginLoading}"`
|
|
775
700
|
: "";
|
|
776
701
|
|
|
777
|
-
// Per-chunk SRI
|
|
778
|
-
//
|
|
779
|
-
//
|
|
780
|
-
// `integrity` options, so sentinels are emitted whenever any page wants SRI
|
|
781
|
-
// and each page then resolves or strips them on emit.
|
|
702
|
+
// Per-chunk SRI emits an `integrity` sentinel resolved once the chunks'
|
|
703
|
+
// final bytes exist. One module can back pages with different `integrity`
|
|
704
|
+
// options, so every page emits them and strips its own on emit.
|
|
782
705
|
const htmlOption = compilation.outputOptions.html;
|
|
783
706
|
const integrityOn = getHtmlGenerator().hasIntegritySentinels(compilation);
|
|
784
707
|
const inject =
|
|
@@ -841,10 +764,6 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
841
764
|
compilation.outputOptions.module === true ? ' type="module"' : "";
|
|
842
765
|
|
|
843
766
|
const entryContentHashType = isStylesheet ? "css" : "javascript";
|
|
844
|
-
const inlineOption =
|
|
845
|
-
typeof htmlOption === "object" ? htmlOption.inline : undefined;
|
|
846
|
-
/** @type {RegExp[] | null} */
|
|
847
|
-
const inlinePatterns = Array.isArray(inlineOption) ? inlineOption : null;
|
|
848
767
|
/**
|
|
849
768
|
* @param {Chunk} chunk chunk to test
|
|
850
769
|
* @param {"javascript" | "css"} contentType which asset of the chunk is being emitted
|
|
@@ -854,25 +773,18 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
854
773
|
// A `<link rel="modulepreload">` is a void fetch hint — inlining it would
|
|
855
774
|
// emit an unclosed, executing `<script>`.
|
|
856
775
|
if (dep.elementKind === "modulepreload") return false;
|
|
776
|
+
if (!getHtmlGenerator().canInlineChunk(compilation, chunk)) {
|
|
777
|
+
return false;
|
|
778
|
+
}
|
|
857
779
|
if (dep.forceInline) return true;
|
|
858
|
-
|
|
859
|
-
if (inlineOption === true) return true;
|
|
860
|
-
// `"script"`/`"style"` inline by asset type, not chunk name — a chunk's
|
|
861
|
-
// JS and CSS share a name, so only the emitted `contentType` tells them
|
|
862
|
-
// apart.
|
|
863
|
-
if (inlineOption === "script") return contentType === "javascript";
|
|
864
|
-
if (inlineOption === "style") return contentType === "css";
|
|
865
|
-
const name = chunk.name || String(chunk.id);
|
|
866
|
-
return /** @type {RegExp[]} */ (inlinePatterns).some((re) =>
|
|
867
|
-
re.test(name)
|
|
868
|
-
);
|
|
780
|
+
return getHtmlGenerator().isChunkInlined(htmlOption, chunk, contentType);
|
|
869
781
|
};
|
|
870
782
|
|
|
871
783
|
// Only inline when the HTML module is emitted as a standalone page (extract mode).
|
|
872
784
|
// If it's exported as a JS string, sentinels would end up embedded in the JS chunk.
|
|
873
785
|
const isExtractedHtml = chunkGraph
|
|
874
786
|
.getModuleSourceTypes(
|
|
875
|
-
/** @type {import("
|
|
787
|
+
/** @type {import("../../module/Module")} */ (templateContext.module)
|
|
876
788
|
)
|
|
877
789
|
.has("html");
|
|
878
790
|
const entryInlined =
|
|
@@ -948,11 +860,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
948
860
|
? ` integrity="${getHtmlGenerator().makeChunkIntegritySentinel(chunk, kind)}"`
|
|
949
861
|
: "";
|
|
950
862
|
if (kind === "css") {
|
|
951
|
-
// A CSS chunk
|
|
952
|
-
//
|
|
953
|
-
//
|
|
954
|
-
// a `<script>` entry that imported CSS, or a custom element,
|
|
955
|
-
// gets a freshly synthesized `<link>`.
|
|
863
|
+
// A CSS chunk always loads through `<link rel="stylesheet">`. Clone
|
|
864
|
+
// only when the entry tag is itself one, so `media` carries over;
|
|
865
|
+
// anything else gets a freshly synthesized `<link>`.
|
|
956
866
|
if (isStylesheet && tagIsNative) {
|
|
957
867
|
return cloneTagWithUrl(
|
|
958
868
|
originalTag,
|
|
@@ -1004,10 +914,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1004
914
|
// Parser-derived anchor (a source text scan would match `</head>` inside
|
|
1005
915
|
// comments or raw text).
|
|
1006
916
|
const headClose = inject === "head" ? dep.headAnchor : -1;
|
|
1007
|
-
//
|
|
1008
|
-
//
|
|
1009
|
-
//
|
|
1010
|
-
// Insert before the entry tag instead so the load order is preserved.
|
|
917
|
+
// With the entry tag already inside `<head>`, inserting at `headClose`
|
|
918
|
+
// would place siblings after it and reverse runtime-before-entry order
|
|
919
|
+
// for deferred scripts. Insert before the entry tag instead.
|
|
1011
920
|
const headAt =
|
|
1012
921
|
headClose < 0
|
|
1013
922
|
? -1
|
|
@@ -1018,31 +927,26 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1018
927
|
let cssHtml = "";
|
|
1019
928
|
let cssAt = -1;
|
|
1020
929
|
if (isStylesheet) {
|
|
1021
|
-
// `<link rel="stylesheet">`
|
|
1022
|
-
// JS-only chunk
|
|
1023
|
-
//
|
|
1024
|
-
// produce a `.css` asset
|
|
1025
|
-
//
|
|
1026
|
-
// `<style>` when inlined
|
|
930
|
+
// WHY: a `<link rel="stylesheet">` entry is CSS, but a shared or runtime
|
|
931
|
+
// JS-only chunk — `optimization.runtimeChunk`, say — can still sit in the
|
|
932
|
+
// entrypoint, so the `<link>` is cloned only for siblings that actually
|
|
933
|
+
// produce a `.css` asset, mirroring the JS branch below. Otherwise it
|
|
934
|
+
// points at a `.css` file that does not exist: a 404, or an empty
|
|
935
|
+
// `<style>` when inlined. Attributes such as `media` still carry over.
|
|
1027
936
|
for (let i = 0; i < orderedChunks.length - 1; i++) {
|
|
1028
937
|
if (chunkHasCss(orderedChunks[i], chunkGraph)) {
|
|
1029
938
|
siblings.push(buildSibling(orderedChunks[i], "css"));
|
|
1030
939
|
}
|
|
1031
940
|
}
|
|
1032
941
|
} else {
|
|
1033
|
-
//
|
|
1034
|
-
//
|
|
1035
|
-
//
|
|
1036
|
-
//
|
|
1037
|
-
//
|
|
1038
|
-
//
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
// re-derive the order from the entrypoint's module post-order
|
|
1042
|
-
// index, which mirrors the dependency walk and so reflects the
|
|
1043
|
-
// import order.
|
|
1044
|
-
/** @type {{ chunk: Chunk, index: number, key: string }[]} */
|
|
1045
|
-
const cssChunkOrder = [];
|
|
942
|
+
// WHY: splitChunks inserts each new chunk before the entry chunk, so
|
|
943
|
+
// `entrypoint.chunks` hands back split CSS siblings in reverse of the
|
|
944
|
+
// order they were processed — the html-webpack-plugin#1838 and
|
|
945
|
+
// mini-css-extract#959 symptom. The order is re-derived from the
|
|
946
|
+
// entrypoint's module post-order index, which follows the dependency
|
|
947
|
+
// walk and so the source's import order.
|
|
948
|
+
/** @type {Chunk[]} */
|
|
949
|
+
const cssChunks = [];
|
|
1046
950
|
/** @type {Chunk[]} */
|
|
1047
951
|
const jsChunks = [];
|
|
1048
952
|
for (let i = 0; i < orderedChunks.length - 1; i++) {
|
|
@@ -1050,47 +954,27 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1050
954
|
const hasCss = chunkHasCss(chunk, chunkGraph);
|
|
1051
955
|
const hasJs = chunkHasJs(chunk, chunkGraph);
|
|
1052
956
|
if (hasCss) {
|
|
1053
|
-
|
|
1054
|
-
chunk,
|
|
1055
|
-
index: firstCssModulePostOrderIndex(
|
|
1056
|
-
chunk,
|
|
1057
|
-
entrypoint,
|
|
1058
|
-
chunkGraph
|
|
1059
|
-
),
|
|
1060
|
-
key: cssChunkSortKey(chunk)
|
|
1061
|
-
});
|
|
957
|
+
cssChunks.push(chunk);
|
|
1062
958
|
}
|
|
1063
|
-
// Anything
|
|
1064
|
-
//
|
|
1065
|
-
//
|
|
1066
|
-
// Chunks that produce no `.js` and no `.css` (e.g. wasm-only
|
|
1067
|
-
// or asset-only) still get a `<script>` clone here so we
|
|
1068
|
-
// keep prior behavior for users who relied on it.
|
|
959
|
+
// Anything not CSS-only stays on the JS lane in `orderedChunks` order,
|
|
960
|
+
// preserving the runtime-first invariant. A chunk emitting neither
|
|
961
|
+
// `.js` nor `.css` still gets a clone, as it always has.
|
|
1069
962
|
if (hasJs || !hasCss) jsChunks.push(chunk);
|
|
1070
963
|
}
|
|
1071
|
-
//
|
|
1072
|
-
//
|
|
1073
|
-
//
|
|
1074
|
-
// cascade position relative to sibling CSS chunks.
|
|
964
|
+
// When the entry chunk carries CSS itself, fold it into the same
|
|
965
|
+
// ordering so its `<link>` lands in the right cascade position
|
|
966
|
+
// relative to the sibling CSS chunks.
|
|
1075
967
|
if (chunkHasCss(entryChunk, chunkGraph)) {
|
|
1076
|
-
|
|
1077
|
-
chunk: entryChunk,
|
|
1078
|
-
index: firstCssModulePostOrderIndex(
|
|
1079
|
-
entryChunk,
|
|
1080
|
-
entrypoint,
|
|
1081
|
-
chunkGraph
|
|
1082
|
-
),
|
|
1083
|
-
key: cssChunkSortKey(entryChunk)
|
|
1084
|
-
});
|
|
968
|
+
cssChunks.push(entryChunk);
|
|
1085
969
|
}
|
|
1086
|
-
cssChunkOrder.
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
//
|
|
1092
|
-
//
|
|
1093
|
-
//
|
|
970
|
+
const cssChunkOrder = getCssModulesPlugin().getCssChunksInCascadeOrder(
|
|
971
|
+
cssChunks,
|
|
972
|
+
entrypoint,
|
|
973
|
+
chunkGraph
|
|
974
|
+
);
|
|
975
|
+
// Stylesheets land in `<head>`. A classic blocking script pins them
|
|
976
|
+
// ahead of itself, so it never awaits later CSS; with only `defer` and
|
|
977
|
+
// module scripts they go last, which starts the script fetches earlier.
|
|
1094
978
|
cssAt =
|
|
1095
979
|
dep.headAnchor >= 0
|
|
1096
980
|
? dep.cssAnchor >= 0 && dep.cssAnchor < dep.headAnchor
|
|
@@ -1100,7 +984,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1100
984
|
? dep.cssAnchor
|
|
1101
985
|
: dep.tagStart;
|
|
1102
986
|
cssHtml = cssChunkOrder
|
|
1103
|
-
.map((
|
|
987
|
+
.map((chunk) => buildSibling(chunk, "css"))
|
|
1104
988
|
.join("");
|
|
1105
989
|
for (const chunk of jsChunks) {
|
|
1106
990
|
siblings.push(buildSibling(chunk, "javascript"));
|
|
@@ -1116,15 +1000,15 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1116
1000
|
if (cssHtml !== "" && dep.cssAnchor < 0) source.insert(cssAt, cssHtml);
|
|
1117
1001
|
}
|
|
1118
1002
|
|
|
1119
|
-
//
|
|
1120
|
-
//
|
|
1121
|
-
//
|
|
1122
|
-
//
|
|
1123
|
-
//
|
|
1124
|
-
// `defaultHints
|
|
1125
|
-
//
|
|
1126
|
-
//
|
|
1127
|
-
//
|
|
1003
|
+
// WHY: resource hints are opt-in, the initial chunks already loading
|
|
1004
|
+
// through parallel `<script>` tags, so there is no default waterfall to
|
|
1005
|
+
// prevent. `output.resourceHints` requests them: `true` preloads the entry's
|
|
1006
|
+
// initial dependency chunks (runtime, vendor, split), while an array or a
|
|
1007
|
+
// function adds custom ones and a function may spread the auto
|
|
1008
|
+
// `defaultHints`. Extracted pages only — a JS-string HTML export would embed
|
|
1009
|
+
// the sentinels in the JS chunk. A URL-referenced asset carrying
|
|
1010
|
+
// `webpackPrefetch` / `webpackPreload`, by magic comment or a
|
|
1011
|
+
// `parser.<type>.urlHints` rule, emits here too.
|
|
1128
1012
|
const resourceHintResolver =
|
|
1129
1013
|
ResourceHintPlugin.getCompilationResolver(compilation);
|
|
1130
1014
|
const resourceHints = resourceHintResolver.hints;
|
|
@@ -1152,15 +1036,16 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1152
1036
|
|
|
1153
1037
|
// === chunks channel — the entry's own initial dependency graph ===
|
|
1154
1038
|
if (resourceHints !== undefined && resourceHints !== false) {
|
|
1155
|
-
//
|
|
1156
|
-
// tag
|
|
1157
|
-
// function may spread them
|
|
1158
|
-
//
|
|
1159
|
-
//
|
|
1160
|
-
//
|
|
1161
|
-
// `integrity
|
|
1162
|
-
//
|
|
1163
|
-
// which routes through
|
|
1039
|
+
// WHY: descriptors for the auto initial-graph preload, carrying their
|
|
1040
|
+
// exact tag and built only when needed — `true` or `"prefetch"` emits
|
|
1041
|
+
// them, and a function may spread them. The entry chunk is skipped, being
|
|
1042
|
+
// the `<script src>` already. ESM uses `modulepreload`, which fetches and
|
|
1043
|
+
// parses; classic output `preload as="script"`; and `"prefetch"` opts into
|
|
1044
|
+
// `<link rel="prefetch">`, an idle-time fetch with no `as` and no
|
|
1045
|
+
// `integrity`, which the spec does not list. An async `import()` chunk is
|
|
1046
|
+
// not covered here: that is
|
|
1047
|
+
// `module.parser.javascript.dynamicImport*`, which routes through
|
|
1048
|
+
// webpack's on-demand chunk-load runtime.
|
|
1164
1049
|
const prefetchMode = resourceHints === "prefetch";
|
|
1165
1050
|
const preloadMode = resourceHints === true;
|
|
1166
1051
|
/** @type {"modulepreload" | "preload" | "prefetch"} */
|
|
@@ -1195,10 +1080,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1195
1080
|
"javascript"
|
|
1196
1081
|
)}"`
|
|
1197
1082
|
: "";
|
|
1198
|
-
// Mirror the entry tag's `nonce
|
|
1199
|
-
//
|
|
1200
|
-
//
|
|
1201
|
-
// fetching twice.
|
|
1083
|
+
// Mirror the entry tag's `nonce`, `crossorigin` and `referrerpolicy`,
|
|
1084
|
+
// so the request matches the sibling `<script>`'s and the browser
|
|
1085
|
+
// reuses it rather than fetching twice.
|
|
1202
1086
|
const attrs = `${dep.copyableAttrsText}${crossOrigin}${integrityAttr}`;
|
|
1203
1087
|
const tag = prefetchMode
|
|
1204
1088
|
? `<link rel="prefetch" href="${href}"${attrs}>`
|
|
@@ -1229,7 +1113,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1229
1113
|
// `<script>` entry — that's what users key on.
|
|
1230
1114
|
let entryName = dep.entryName;
|
|
1231
1115
|
for (const c of chunkGraph.getModuleChunks(
|
|
1232
|
-
/** @type {import("
|
|
1116
|
+
/** @type {import("../../module/Module")} */ (
|
|
1117
|
+
templateContext.module
|
|
1118
|
+
)
|
|
1233
1119
|
)) {
|
|
1234
1120
|
if (c.name) {
|
|
1235
1121
|
entryName = c.name;
|
|
@@ -1276,14 +1162,10 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1276
1162
|
}
|
|
1277
1163
|
|
|
1278
1164
|
// === assets channel — URL-referenced assets carrying `prefetch`/`preload` ===
|
|
1279
|
-
|
|
1280
|
-
//
|
|
1281
|
-
// consume that list
|
|
1282
|
-
//
|
|
1283
|
-
// the HTML `<head>`; the JS chunk-startup runtime skips it (no
|
|
1284
|
-
// double `<link>` in DOM). URLs are sentinels resolved from asset
|
|
1285
|
-
// codegen data during `HtmlModulesPlugin` render — the asset
|
|
1286
|
-
// module might not have been codegen'd yet at this point.
|
|
1165
|
+
|
|
1166
|
+
// The plugin already walked the entrypoint once and cached this entry's
|
|
1167
|
+
// asset deps, so consume that list rather than repeat it. URLs stay
|
|
1168
|
+
// sentinels here: the asset module may not be codegen'd yet.
|
|
1287
1169
|
const outputCrossOriginAttr = crossOriginLoading
|
|
1288
1170
|
? ` crossorigin="${crossOriginLoading}"`
|
|
1289
1171
|
: "";
|
|
@@ -1294,7 +1176,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1294
1176
|
const asAttr =
|
|
1295
1177
|
md.asAttribute ||
|
|
1296
1178
|
ResourceHintRuntimeModule.guessAsAttribute(
|
|
1297
|
-
/** @type {import("
|
|
1179
|
+
/** @type {import("../url/URLDependency")} */ (md).request || ""
|
|
1298
1180
|
);
|
|
1299
1181
|
const typeAttr = md.typeAttribute;
|
|
1300
1182
|
const mediaAttr = md.mediaAttribute;
|
|
@@ -1324,12 +1206,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1324
1206
|
finalHints.push(h);
|
|
1325
1207
|
}
|
|
1326
1208
|
}
|
|
1327
|
-
//
|
|
1328
|
-
//
|
|
1329
|
-
//
|
|
1330
|
-
// `resourceHints.modulePreloadPolyfill` defaults from the target's
|
|
1331
|
-
// modulepreload support (`output.environment.modulePreload`); `false`
|
|
1332
|
-
// opts out (strict CSP).
|
|
1209
|
+
// Without native `modulepreload` the hints warm no cache, so append the
|
|
1210
|
+
// polyfill once per page. It defaults from the target's support, and
|
|
1211
|
+
// `false` opts out, which a strict CSP needs.
|
|
1333
1212
|
if (
|
|
1334
1213
|
rhOptions &&
|
|
1335
1214
|
rhOptions.modulePreloadPolyfill &&
|
|
@@ -1339,10 +1218,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1339
1218
|
polyfilledSources.add(source);
|
|
1340
1219
|
finalHints.push(`<script>${MODULEPRELOAD_POLYFILL}</script>`);
|
|
1341
1220
|
}
|
|
1342
|
-
// Insert
|
|
1343
|
-
//
|
|
1344
|
-
// blocking script
|
|
1345
|
-
// written `<head>` (e.g. an HTML fragment).
|
|
1221
|
+
// Insert just after the `<head>` open tag, so the hints are the first
|
|
1222
|
+
// fetches. A page with no written `<head>` falls back to the first
|
|
1223
|
+
// blocking script, else the entry tag.
|
|
1346
1224
|
const hintAt =
|
|
1347
1225
|
dep.headOpenEnd >= 0
|
|
1348
1226
|
? dep.headOpenEnd
|
|
@@ -1355,9 +1233,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
|
|
|
1355
1233
|
}
|
|
1356
1234
|
};
|
|
1357
1235
|
|
|
1358
|
-
makeSerializable(
|
|
1359
|
-
HtmlEntryDependency,
|
|
1236
|
+
makeSerializable(HtmlEntryDependency, [
|
|
1237
|
+
"webpack/lib/dependencies/html/HtmlEntryDependency",
|
|
1238
|
+
// TODO in the next major release: remove, they restore pre-move cache packs
|
|
1360
1239
|
"webpack/lib/dependencies/HtmlEntryDependency"
|
|
1361
|
-
);
|
|
1240
|
+
]);
|
|
1241
|
+
|
|
1242
|
+
/** @type {Set<keyof DependencyKinds>} */
|
|
1243
|
+
HtmlEntryDependency.KINDS = new Set([...ModuleDependency.KINDS, "html-entry"]);
|
|
1362
1244
|
|
|
1363
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;
|