@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
|
@@ -4,23 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const { basename, extname } = require("path");
|
|
8
7
|
const { pathToFileURL } = require("url");
|
|
9
8
|
const { AsyncSeriesHook, AsyncSeriesWaterfallHook } = require("tapable");
|
|
10
9
|
const { RawSource } = require("webpack-sources");
|
|
11
10
|
const Compilation = require("../Compilation");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const { HTML_MODULE_TYPE } = require("../ModuleTypeConstants");
|
|
17
|
-
const NormalModule = require("../NormalModule");
|
|
18
|
-
const { toTemplateSourceFileName } = require("../TemplatedPathPlugin");
|
|
19
|
-
const ConstDependency = require("../dependencies/ConstDependency");
|
|
20
|
-
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
|
11
|
+
const ConstDependency = require("../dependencies/core/ConstDependency");
|
|
12
|
+
const StaticExportsDependency = require("../dependencies/core/StaticExportsDependency");
|
|
13
|
+
const EntryOptionPlugin = require("../entry/EntryOptionPlugin");
|
|
14
|
+
const EntryPlugin = require("../entry/EntryPlugin");
|
|
21
15
|
const WebpackError = require("../errors/WebpackError");
|
|
22
16
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
23
|
-
const
|
|
17
|
+
const { HTML_TYPE } = require("../module/ModuleSourceTypeConstants");
|
|
18
|
+
const { HTML_MODULE_TYPE } = require("../module/ModuleTypeConstants");
|
|
19
|
+
const NormalModule = require("../module/NormalModule");
|
|
20
|
+
const { toTemplateSourceFileName } = require("../template/TemplatedPathPlugin");
|
|
24
21
|
const {
|
|
25
22
|
compareModulesByFullName,
|
|
26
23
|
compareModulesByIdentifier
|
|
@@ -28,9 +25,9 @@ const {
|
|
|
28
25
|
const createHash = require("../util/createHash");
|
|
29
26
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
30
27
|
const {
|
|
28
|
+
getRequestBaseName,
|
|
31
29
|
getUndoPath,
|
|
32
|
-
makePathsRelative
|
|
33
|
-
parseResource
|
|
30
|
+
makePathsRelative
|
|
34
31
|
} = require("../util/identifier");
|
|
35
32
|
const implicitTypeLoaderFallback = require("../util/implicitTypeLoaderFallback");
|
|
36
33
|
const lazyModule = require("../util/lazyModule");
|
|
@@ -45,7 +42,7 @@ const HtmlModule = require("./HtmlModule");
|
|
|
45
42
|
|
|
46
43
|
const getMimeTypes = memoize(() => require("../util/mimeTypes"));
|
|
47
44
|
|
|
48
|
-
const getHtmlSyntax = memoize(() => require("./syntax"));
|
|
45
|
+
const getHtmlSyntax = memoize(() => require("./syntax-parser"));
|
|
49
46
|
|
|
50
47
|
// Lazy: this plugin is applied on every build (`experiments.html` defaults on),
|
|
51
48
|
// but the HTML parser and tokenizer are only reached once HTML is in the graph.
|
|
@@ -73,14 +70,14 @@ const getCssModulesPlugin = memoize(() => require("../css/CssModulesPlugin"));
|
|
|
73
70
|
/** @typedef {import("../../declarations/WebpackOptions").OutputHtmlOptions["favicon"]} FaviconOption */
|
|
74
71
|
/** @typedef {import("../../declarations/WebpackOptions").OutputHtmlOptions["manifest"]} ManifestOption */
|
|
75
72
|
/** @typedef {Exclude<HtmlFaviconIcon, string>} FaviconIcon */
|
|
76
|
-
/** @import Chunk, { ChunkFilenameTemplate } from "../Chunk" */
|
|
77
|
-
/** @import ChunkGraph from "../ChunkGraph" */
|
|
73
|
+
/** @import Chunk, { ChunkFilenameTemplate } from "../graph/Chunk" */
|
|
74
|
+
/** @import ChunkGraph from "../graph/ChunkGraph" */
|
|
78
75
|
/** @import Compiler from "../Compiler" */
|
|
79
|
-
/** @import Module from "../Module" */
|
|
76
|
+
/** @import Module from "../module/Module" */
|
|
80
77
|
/** @typedef {import("../Compilation").EntryData} EntryData */
|
|
81
78
|
/** @import { HtmlModuleBuildInfo } from "./HtmlModule" */
|
|
82
79
|
/** @import HtmlParser from "./HtmlParser" */
|
|
83
|
-
/** @typedef {{ request: string, entryName: string, index: number, type: "script" | "script-module" | "modulepreload" | "stylesheet" | "html" | "preload" | "prefetch", css?: boolean }} HtmlEntryInfo */
|
|
80
|
+
/** @typedef {{ request: string, entryName: string, index: number, type: "script" | "script-module" | "modulepreload" | "stylesheet" | "html" | "preload" | "prefetch", css?: boolean, chunkName?: string }} HtmlEntryInfo */
|
|
84
81
|
/**
|
|
85
82
|
* What one extracted entry needs to be named. Recorded in page order once
|
|
86
83
|
* every page is built, and resolved to filenames once chunks exist.
|
|
@@ -114,6 +111,7 @@ const getCssModulesPlugin = memoize(() => require("../css/CssModulesPlugin"));
|
|
|
114
111
|
* @property {boolean=} remove set true to delete the whole element
|
|
115
112
|
*/
|
|
116
113
|
/** @typedef {{ outputName: string, html: string }} HtmlTransformTagsContext */
|
|
114
|
+
/** @typedef {{ context: string, request: string, name: string, index: number, dependOn: string[] | undefined, page: boolean }} HtmlEntrySpec */
|
|
117
115
|
|
|
118
116
|
const createCompilationHooks = () => ({
|
|
119
117
|
/**
|
|
@@ -289,29 +287,19 @@ const getPageOnlyEntry = (compilation, module) => {
|
|
|
289
287
|
return configured === undefined ? entry : undefined;
|
|
290
288
|
};
|
|
291
289
|
|
|
292
|
-
/**
|
|
293
|
-
* The basename a tag's url lends to the entry it becomes, so
|
|
294
|
-
* `src="./my-script.js"` emits `my-script.js`. Undefined for an inline body.
|
|
295
|
-
* @param {string} request the tag's request
|
|
296
|
-
* @returns {string | undefined} the basename, when the url carries one
|
|
297
|
-
*/
|
|
298
|
-
const getRequestBaseName = (request) => {
|
|
299
|
-
// An inline `<script>` body is a `data:` request webpack writes itself.
|
|
300
|
-
if (request.startsWith("data:")) return undefined;
|
|
301
|
-
const { path: file } = parseResource(request);
|
|
302
|
-
return basename(file, extname(file)) || undefined;
|
|
303
|
-
};
|
|
304
|
-
|
|
305
290
|
/**
|
|
306
291
|
* Claims `base`, numbering it while something else already emits under that
|
|
307
292
|
* name, so two tags sharing a basename stay distinct.
|
|
308
293
|
* @param {string} base preferred name
|
|
309
294
|
* @param {Set<string>} taken names this kind of output already emits under
|
|
295
|
+
* @param {Map<string, number>} next per base, the number every lower one is taken up to
|
|
310
296
|
* @returns {string} the claimed name
|
|
311
297
|
*/
|
|
312
|
-
const claimName = (base, taken) => {
|
|
313
|
-
let
|
|
314
|
-
|
|
298
|
+
const claimName = (base, taken, next) => {
|
|
299
|
+
let index = next.get(base) || 0;
|
|
300
|
+
let name = index === 0 ? base : `${base}${index}`;
|
|
301
|
+
while (taken.has(name)) name = `${base}${++index}`;
|
|
302
|
+
next.set(base, index + 1);
|
|
315
303
|
taken.add(name);
|
|
316
304
|
return name;
|
|
317
305
|
};
|
|
@@ -417,7 +405,7 @@ const collectHtmlEntryRequests = (name, entries) => {
|
|
|
417
405
|
|
|
418
406
|
/**
|
|
419
407
|
* @param {string} name definition name in `schemas/WebpackOptions.json`
|
|
420
|
-
* @returns {
|
|
408
|
+
* @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} a schema referencing `#/definitions/<name>`
|
|
421
409
|
*/
|
|
422
410
|
const getSchema = (name) => {
|
|
423
411
|
const { definitions } = require("../../schemas/WebpackOptions.json");
|
|
@@ -465,16 +453,16 @@ class HtmlModulesPlugin {
|
|
|
465
453
|
* Filename template for an extracted HTML page: `output.htmlFilename` for
|
|
466
454
|
* initial chunks, `output.htmlChunkFilename` otherwise — the HTML counterpart
|
|
467
455
|
* of `CssModulesPlugin.getChunkFilenameTemplate`.
|
|
468
|
-
* @param {import("../Chunk")} chunk chunk
|
|
456
|
+
* @param {import("../graph/Chunk")} chunk chunk
|
|
469
457
|
* @param {OutputOptions} outputOptions output options
|
|
470
|
-
* @returns {import("../Chunk").ChunkFilenameTemplate} used filename template
|
|
458
|
+
* @returns {import("../graph/Chunk").ChunkFilenameTemplate} used filename template
|
|
471
459
|
*/
|
|
472
460
|
static getChunkFilenameTemplate(chunk, outputOptions) {
|
|
473
461
|
return chunk.canBeInitial()
|
|
474
|
-
? /** @type {import("../Chunk").ChunkFilenameTemplate} */ (
|
|
462
|
+
? /** @type {import("../graph/Chunk").ChunkFilenameTemplate} */ (
|
|
475
463
|
outputOptions.htmlFilename
|
|
476
464
|
)
|
|
477
|
-
: /** @type {import("../Chunk").ChunkFilenameTemplate} */ (
|
|
465
|
+
: /** @type {import("../graph/Chunk").ChunkFilenameTemplate} */ (
|
|
478
466
|
outputOptions.htmlChunkFilename
|
|
479
467
|
);
|
|
480
468
|
}
|
|
@@ -626,11 +614,11 @@ class HtmlModulesPlugin {
|
|
|
626
614
|
// Per-compilation state: the HTML modules seen during make, so `finishMake`
|
|
627
615
|
// creates their entries without scanning the module graph, plus the
|
|
628
616
|
// stylesheet entry names and each emitted page's html options.
|
|
629
|
-
/** @type {WeakMap<import("../Compilation"), { htmlModules: Set<Module>, stylesheetEntries: Set<string>, pendingNames: Map<string, PendingName>, htmlAssetOptions: Map<string, OutputHtmlOptions> }>} */
|
|
617
|
+
/** @type {WeakMap<import("../Compilation"), { htmlModules: Set<Module>, stylesheetEntries: Set<string>, pendingNames: Map<string, PendingName>, htmlAssetOptions: Map<string, OutputHtmlOptions>, pageNames: Map<string, string> }>} */
|
|
630
618
|
const compilationState = new WeakMap();
|
|
631
619
|
/**
|
|
632
620
|
* @param {import("../Compilation")} compilation compilation
|
|
633
|
-
* @returns {{ htmlModules: Set<Module>, stylesheetEntries: Set<string>, pendingNames: Map<string, PendingName>, htmlAssetOptions: Map<string, OutputHtmlOptions> }} per-compilation state
|
|
621
|
+
* @returns {{ htmlModules: Set<Module>, stylesheetEntries: Set<string>, pendingNames: Map<string, PendingName>, htmlAssetOptions: Map<string, OutputHtmlOptions>, pageNames: Map<string, string> }} per-compilation state
|
|
634
622
|
*/
|
|
635
623
|
const getState = (compilation) => {
|
|
636
624
|
let state = compilationState.get(compilation);
|
|
@@ -639,14 +627,15 @@ class HtmlModulesPlugin {
|
|
|
639
627
|
htmlModules: new Set(),
|
|
640
628
|
stylesheetEntries: new Set(),
|
|
641
629
|
pendingNames: new Map(),
|
|
642
|
-
htmlAssetOptions: new Map()
|
|
630
|
+
htmlAssetOptions: new Map(),
|
|
631
|
+
pageNames: new Map()
|
|
643
632
|
};
|
|
644
633
|
compilationState.set(compilation, state);
|
|
645
634
|
}
|
|
646
635
|
return state;
|
|
647
636
|
};
|
|
648
637
|
compiler.hooks.finishMake.tapAsync(PLUGIN_NAME, (compilation, callback) => {
|
|
649
|
-
const { htmlModules, stylesheetEntries, pendingNames } =
|
|
638
|
+
const { htmlModules, stylesheetEntries, pendingNames, pageNames } =
|
|
650
639
|
getState(compilation);
|
|
651
640
|
/** @type {Set<string>} */
|
|
652
641
|
const extractedNames = new Set();
|
|
@@ -658,22 +647,29 @@ class HtmlModulesPlugin {
|
|
|
658
647
|
// Collect the entries an HTML module asks for. Only the script chains share
|
|
659
648
|
// a runtime, through a leader-only `dependOn`; chaining a CSS or page entry
|
|
660
649
|
// into a JS leader would mix unrelated outputs into one chunk.
|
|
661
|
-
/** @type {(module: Module) =>
|
|
650
|
+
/** @type {(module: Module) => HtmlEntrySpec[]} */
|
|
662
651
|
const collectEntrySpecs = (module) => {
|
|
663
652
|
const { htmlEntries } = /** @type {HtmlModuleBuildInfo} */ (
|
|
664
653
|
module.buildInfo
|
|
665
654
|
);
|
|
666
655
|
if (!htmlEntries) return [];
|
|
667
656
|
const context = /** @type {string} */ (module.context);
|
|
657
|
+
/** @type {HtmlEntrySpec[]} */
|
|
668
658
|
const specs = [];
|
|
659
|
+
/** @type {Set<string>} */
|
|
660
|
+
const specNames = new Set();
|
|
669
661
|
for (const [groupKind, group] of Object.entries(htmlEntries)) {
|
|
670
662
|
const isChainGroup =
|
|
671
663
|
groupKind === "script" || groupKind === "script-module";
|
|
672
664
|
/** @type {string | undefined} */
|
|
673
665
|
let leaderName;
|
|
674
666
|
for (const entry of group) {
|
|
667
|
+
// A run's tags are added under one entry name and the first of
|
|
668
|
+
// them carries its options, so a later one re-decides nothing.
|
|
675
669
|
const dependOn =
|
|
676
|
-
isChainGroup &&
|
|
670
|
+
isChainGroup &&
|
|
671
|
+
leaderName !== undefined &&
|
|
672
|
+
!specNames.has(entry.entryName)
|
|
677
673
|
? [leaderName]
|
|
678
674
|
: undefined;
|
|
679
675
|
if (isChainGroup && leaderName === undefined) {
|
|
@@ -685,14 +681,39 @@ class HtmlModulesPlugin {
|
|
|
685
681
|
stylesheetEntries.add(entry.entryName);
|
|
686
682
|
}
|
|
687
683
|
extractedNames.add(entry.entryName);
|
|
684
|
+
specNames.add(entry.entryName);
|
|
688
685
|
specs.push({
|
|
689
686
|
context,
|
|
690
687
|
request: entry.request,
|
|
691
688
|
name: entry.entryName,
|
|
692
|
-
|
|
689
|
+
index: entry.index,
|
|
690
|
+
dependOn,
|
|
691
|
+
page: groupKind === "html"
|
|
693
692
|
});
|
|
694
693
|
}
|
|
695
694
|
}
|
|
695
|
+
// A run is collected group by group, so its members are put back into
|
|
696
|
+
// the document's order — an entry's array is executed in it.
|
|
697
|
+
/** @type {Map<string, number[]>} */
|
|
698
|
+
const positionsByName = new Map();
|
|
699
|
+
for (let position = 0; position < specs.length; position++) {
|
|
700
|
+
const { name } = specs[position];
|
|
701
|
+
const positions = positionsByName.get(name);
|
|
702
|
+
if (positions === undefined) {
|
|
703
|
+
positionsByName.set(name, [position]);
|
|
704
|
+
} else {
|
|
705
|
+
positions.push(position);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
for (const positions of positionsByName.values()) {
|
|
709
|
+
if (positions.length < 2) continue;
|
|
710
|
+
const ordered = positions
|
|
711
|
+
.map((position) => specs[position])
|
|
712
|
+
.sort((a, b) => a.index - b.index);
|
|
713
|
+
for (let i = 0; i < positions.length; i++) {
|
|
714
|
+
specs[positions[i]] = ordered[i];
|
|
715
|
+
}
|
|
716
|
+
}
|
|
696
717
|
return specs;
|
|
697
718
|
};
|
|
698
719
|
|
|
@@ -737,13 +758,29 @@ class HtmlModulesPlugin {
|
|
|
737
758
|
}
|
|
738
759
|
}
|
|
739
760
|
ordered.sort((a, b) => a.index - b.index);
|
|
761
|
+
// An inline body has no url to be named after, so its page lends the
|
|
762
|
+
// name — and a `data:` page has none either, so its holder is walked to.
|
|
763
|
+
/** @type {string | undefined} */
|
|
764
|
+
let pageBase;
|
|
765
|
+
/** @type {Module | null | undefined} */
|
|
766
|
+
let holder = module;
|
|
767
|
+
while (pageBase === undefined && holder) {
|
|
768
|
+
const holderResource = /** @type {NormalModule} */ (holder).resource;
|
|
769
|
+
if (typeof holderResource === "string") {
|
|
770
|
+
pageBase = getRequestBaseName(holderResource);
|
|
771
|
+
}
|
|
772
|
+
holder = compilation.moduleGraph.getIssuer(holder);
|
|
773
|
+
}
|
|
740
774
|
for (const entry of ordered) {
|
|
741
|
-
//
|
|
742
|
-
//
|
|
775
|
+
// A name the page or `module.parser.html.chunkName` asked for is what
|
|
776
|
+
// the file is called too; otherwise the tag's url lends its basename.
|
|
743
777
|
const base =
|
|
744
778
|
wrapsEntry && namedEntry
|
|
745
779
|
? namedEntry.name
|
|
746
|
-
:
|
|
780
|
+
: entry.chunkName ||
|
|
781
|
+
getRequestBaseName(entry.request) ||
|
|
782
|
+
pageBase ||
|
|
783
|
+
entry.entryName;
|
|
747
784
|
pendingNames.set(entry.entryName, {
|
|
748
785
|
base,
|
|
749
786
|
jsTemplate,
|
|
@@ -752,6 +789,11 @@ class HtmlModulesPlugin {
|
|
|
752
789
|
}
|
|
753
790
|
links.sort((a, b) => a.index - b.index);
|
|
754
791
|
for (const link of links) {
|
|
792
|
+
// A linked page is named after its own path; a name the page asked
|
|
793
|
+
// for replaces that, and the link to it is rewritten either way.
|
|
794
|
+
if (link.chunkName && !contestedPageNames.has(link.entryName)) {
|
|
795
|
+
pageNames.set(link.entryName, link.chunkName);
|
|
796
|
+
}
|
|
755
797
|
const page = linkedPages.get(link.entryName);
|
|
756
798
|
if (page) recordNames(page, seen);
|
|
757
799
|
}
|
|
@@ -759,7 +801,7 @@ class HtmlModulesPlugin {
|
|
|
759
801
|
|
|
760
802
|
// Push one collected reference as a compilation entry; resolves with
|
|
761
803
|
// the built entry module.
|
|
762
|
-
/** @type {(spec:
|
|
804
|
+
/** @type {(spec: HtmlEntrySpec) => Promise<Module | null>} */
|
|
763
805
|
const addEntry = (spec) =>
|
|
764
806
|
new Promise((resolve, reject) => {
|
|
765
807
|
compilation.addEntry(
|
|
@@ -777,10 +819,32 @@ class HtmlModulesPlugin {
|
|
|
777
819
|
);
|
|
778
820
|
});
|
|
779
821
|
|
|
822
|
+
// What each page name was claimed for, so a second page asking for a
|
|
823
|
+
// taken one is refused rather than appended to the entry holding it.
|
|
824
|
+
/** @type {Map<string, string>} */
|
|
825
|
+
const pageRequests = new Map();
|
|
826
|
+
// Names a second page asked for and did not get, so it keeps the one its
|
|
827
|
+
// own path lends and emits beside the page holding the name.
|
|
828
|
+
/** @type {Set<string>} */
|
|
829
|
+
const contestedPageNames = new Set();
|
|
830
|
+
/**
|
|
831
|
+
* @param {string} name the name two things ask for
|
|
832
|
+
* @param {string} taken what holds it
|
|
833
|
+
* @param {string} request what asked for it
|
|
834
|
+
*/
|
|
835
|
+
const reportNameTaken = (name, taken, request) => {
|
|
836
|
+
contestedPageNames.add(name);
|
|
837
|
+
compilation.errors.push(
|
|
838
|
+
new WebpackError(
|
|
839
|
+
`The name "${name}" is asked for by ${request} and is already taken by ${taken}. A page is emitted as its name, so give one of them another.`
|
|
840
|
+
)
|
|
841
|
+
);
|
|
842
|
+
};
|
|
843
|
+
|
|
780
844
|
// Create one HTML module's entries. A `type: "html"` link is itself an
|
|
781
845
|
// HTML entry, so after it builds we recurse into it — the same handling
|
|
782
846
|
// every HTML entry already gets. `processed` guards diamonds and cycles.
|
|
783
|
-
/** @type {WeakSet<import("../Module")>} */
|
|
847
|
+
/** @type {WeakSet<import("../module/Module")>} */
|
|
784
848
|
const processed = new WeakSet();
|
|
785
849
|
/** @type {(module: Module) => Promise<void>} */
|
|
786
850
|
const processEntry = async (module) => {
|
|
@@ -788,8 +852,33 @@ class HtmlModulesPlugin {
|
|
|
788
852
|
processed.add(module);
|
|
789
853
|
await Promise.all(
|
|
790
854
|
collectEntrySpecs(module).map(async (spec) => {
|
|
855
|
+
if (spec.page) {
|
|
856
|
+
const claimed = pageRequests.get(spec.name);
|
|
857
|
+
// The page holding the name is already an entry of its own:
|
|
858
|
+
// a second link to it adds nothing, a second page cannot have it.
|
|
859
|
+
if (claimed !== undefined) {
|
|
860
|
+
if (claimed !== spec.request) {
|
|
861
|
+
reportNameTaken(spec.name, claimed, spec.request);
|
|
862
|
+
}
|
|
863
|
+
return;
|
|
864
|
+
}
|
|
865
|
+
pageRequests.set(spec.name, spec.request);
|
|
866
|
+
}
|
|
791
867
|
const entryModule = await addEntry(spec);
|
|
792
|
-
|
|
868
|
+
// A page entry webpack made for us holds that page alone; anything
|
|
869
|
+
// else in it named the same and would be emitted over.
|
|
870
|
+
if (spec.page) {
|
|
871
|
+
const entry = compilation.entries.get(spec.name);
|
|
872
|
+
if (entry && entry.dependencies.length !== 1) {
|
|
873
|
+
reportNameTaken(
|
|
874
|
+
spec.name,
|
|
875
|
+
`entry "${spec.name}"`,
|
|
876
|
+
spec.request
|
|
877
|
+
);
|
|
878
|
+
return;
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
if (entryModule && entryModule.is("html")) {
|
|
793
882
|
linkedPages.set(spec.name, entryModule);
|
|
794
883
|
await processEntry(entryModule);
|
|
795
884
|
}
|
|
@@ -814,7 +903,7 @@ class HtmlModulesPlugin {
|
|
|
814
903
|
|
|
815
904
|
// `"auto"` marks implicit enablement, the one case where loaders win over
|
|
816
905
|
// the built-in type — see `applyExperimentsDefaults`.
|
|
817
|
-
// TODO
|
|
906
|
+
// TODO in the next major release: html defaults to `true`, drop this implicit-only fallback.
|
|
818
907
|
const implicitlyEnabled = compiler.options.experiments.html === "auto";
|
|
819
908
|
compiler.hooks.compilation.tap(
|
|
820
909
|
PLUGIN_NAME,
|
|
@@ -831,11 +920,11 @@ class HtmlModulesPlugin {
|
|
|
831
920
|
/**
|
|
832
921
|
* Records HTML modules as they are built or restored, so `finishMake`
|
|
833
922
|
* creates their entries without scanning the whole module graph.
|
|
834
|
-
* @param {import("../Module")} module built or restored module
|
|
923
|
+
* @param {import("../module/Module")} module built or restored module
|
|
835
924
|
* @returns {void}
|
|
836
925
|
*/
|
|
837
926
|
const trackHtmlModule = (module) => {
|
|
838
|
-
if (module.
|
|
927
|
+
if (!module.is("html")) return;
|
|
839
928
|
// enabled here, not on the compilation hook: an integrity build
|
|
840
929
|
// with no html module must not load the generator
|
|
841
930
|
if (anyIntegrity) {
|
|
@@ -985,6 +1074,10 @@ class HtmlModulesPlugin {
|
|
|
985
1074
|
// documents' order rather than their builds'.
|
|
986
1075
|
const takenJsNames = new Set(compilation.entries.keys());
|
|
987
1076
|
const takenCssNames = new Set(takenJsNames);
|
|
1077
|
+
/** @type {Map<string, number>} */
|
|
1078
|
+
const nextJsIndex = new Map();
|
|
1079
|
+
/** @type {Map<string, number>} */
|
|
1080
|
+
const nextCssIndex = new Map();
|
|
988
1081
|
// An extracted entry emits nothing under its own synthetic name, so
|
|
989
1082
|
// that name never stands in the way of the one its tag asks for.
|
|
990
1083
|
for (const entryName of pendingNames.keys()) {
|
|
@@ -1012,7 +1105,7 @@ class HtmlModulesPlugin {
|
|
|
1012
1105
|
chunk.filenameTemplate = getEntryTemplate(
|
|
1013
1106
|
jsTemplate,
|
|
1014
1107
|
jsExtension,
|
|
1015
|
-
claimName(base, takenJsNames)
|
|
1108
|
+
claimName(base, takenJsNames, nextJsIndex)
|
|
1016
1109
|
);
|
|
1017
1110
|
}
|
|
1018
1111
|
// A `<script src>` whose chunk carries no CSS claims no CSS name, so
|
|
@@ -1026,7 +1119,7 @@ class HtmlModulesPlugin {
|
|
|
1026
1119
|
chunk.cssFilenameTemplate = getEntryTemplate(
|
|
1027
1120
|
outputOptions.cssFilename,
|
|
1028
1121
|
".css",
|
|
1029
|
-
claimName(base, takenCssNames)
|
|
1122
|
+
claimName(base, takenCssNames, nextCssIndex)
|
|
1030
1123
|
);
|
|
1031
1124
|
}
|
|
1032
1125
|
});
|
|
@@ -1046,11 +1139,11 @@ class HtmlModulesPlugin {
|
|
|
1046
1139
|
normalModuleFactory.hooks.prepareModuleType
|
|
1047
1140
|
.for(HTML_MODULE_TYPE)
|
|
1048
1141
|
.tap(PLUGIN_NAME, () => {
|
|
1049
|
-
const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
|
|
1050
|
-
const HtmlEntryDependency = require("../dependencies/HtmlEntryDependency");
|
|
1051
|
-
const HtmlInlineScriptDependency = require("../dependencies/HtmlInlineScriptDependency");
|
|
1052
|
-
const HtmlInlineStyleDependency = require("../dependencies/HtmlInlineStyleDependency");
|
|
1053
|
-
const HtmlInlineHtmlDependency = require("../dependencies/HtmlInlineHtmlDependency");
|
|
1142
|
+
const HtmlSourceDependency = require("../dependencies/html/HtmlSourceDependency");
|
|
1143
|
+
const HtmlEntryDependency = require("../dependencies/html/HtmlEntryDependency");
|
|
1144
|
+
const HtmlInlineScriptDependency = require("../dependencies/html/HtmlInlineScriptDependency");
|
|
1145
|
+
const HtmlInlineStyleDependency = require("../dependencies/html/HtmlInlineStyleDependency");
|
|
1146
|
+
const HtmlInlineHtmlDependency = require("../dependencies/html/HtmlInlineHtmlDependency");
|
|
1054
1147
|
|
|
1055
1148
|
compilation.dependencyFactories.set(
|
|
1056
1149
|
HtmlSourceDependency,
|
|
@@ -1149,7 +1242,7 @@ class HtmlModulesPlugin {
|
|
|
1149
1242
|
NormalModule.getCompilationHooks(compilation).processResult.tap(
|
|
1150
1243
|
PLUGIN_NAME,
|
|
1151
1244
|
(result, module) => {
|
|
1152
|
-
if (module.
|
|
1245
|
+
if (module.is("html")) {
|
|
1153
1246
|
const [source, ...rest] = removeBOMFromResult(result);
|
|
1154
1247
|
// Run here, where the returned source becomes the module's stored
|
|
1155
1248
|
// source, so the parser's dependency offsets and the generator's
|
|
@@ -1185,13 +1278,13 @@ class HtmlModulesPlugin {
|
|
|
1185
1278
|
* content hash. Links to other pages stay sentinels, so a page's filename
|
|
1186
1279
|
* never depends on the filenames of the pages it links to.
|
|
1187
1280
|
* @param {NormalModule} module the page's html module
|
|
1188
|
-
* @param {import("../Chunk")} chunk chunk the page is emitted from
|
|
1281
|
+
* @param {import("../graph/Chunk")} chunk chunk the page is emitted from
|
|
1189
1282
|
* @returns {{ resolvedContent: string, contentHash: string, filename: string, info: import("../Compilation").AssetInfo } | undefined} the page's emit, or `undefined` when it generates no html
|
|
1190
1283
|
*/
|
|
1191
1284
|
const computePageEmit = (module, chunk) => {
|
|
1192
1285
|
const { chunkGraph, outputOptions } = compilation;
|
|
1193
1286
|
const codeGenResult =
|
|
1194
|
-
/** @type {import("../CodeGenerationResults")} */ (
|
|
1287
|
+
/** @type {import("../module/CodeGenerationResults")} */ (
|
|
1195
1288
|
compilation.codeGenerationResults
|
|
1196
1289
|
).get(module, chunk.runtime);
|
|
1197
1290
|
const placeholderSource = codeGenResult.sources.get(HTML_TYPE);
|
|
@@ -1224,10 +1317,14 @@ class HtmlModulesPlugin {
|
|
|
1224
1317
|
resolvedSentinelHashCache.set(placeholderSource, cached);
|
|
1225
1318
|
}
|
|
1226
1319
|
const resource = module.getResource() || module.resource;
|
|
1227
|
-
//
|
|
1228
|
-
//
|
|
1320
|
+
// A page is named after its own path, unless it asked for a name; a
|
|
1321
|
+
// synthetic `output.html` entry has none, so its entry names it.
|
|
1322
|
+
const requestedPageName = chunk.name
|
|
1323
|
+
? getState(compilation).pageNames.get(chunk.name)
|
|
1324
|
+
: undefined;
|
|
1229
1325
|
const sourceFilename =
|
|
1230
|
-
|
|
1326
|
+
requestedPageName ||
|
|
1327
|
+
(resource.startsWith("data:text/html") && chunk.name
|
|
1231
1328
|
? chunk.name
|
|
1232
1329
|
: toTemplateSourceFileName(
|
|
1233
1330
|
makePathsRelative(
|
|
@@ -1236,13 +1333,13 @@ class HtmlModulesPlugin {
|
|
|
1236
1333
|
compiler.root
|
|
1237
1334
|
).replace(/^\.\//, ""),
|
|
1238
1335
|
compilation
|
|
1239
|
-
);
|
|
1336
|
+
));
|
|
1240
1337
|
const filenameTemplate = HtmlModulesPlugin.getChunkFilenameTemplate(
|
|
1241
1338
|
chunk,
|
|
1242
1339
|
outputOptions
|
|
1243
1340
|
);
|
|
1244
1341
|
const { path: filename, info } = compilation.getPathWithInfo(
|
|
1245
|
-
/** @type {import("../TemplatedPathPlugin").TemplatePath} */
|
|
1342
|
+
/** @type {import("../template/TemplatedPathPlugin").TemplatePath} */
|
|
1246
1343
|
(filenameTemplate),
|
|
1247
1344
|
{
|
|
1248
1345
|
module,
|
|
@@ -1302,7 +1399,7 @@ class HtmlModulesPlugin {
|
|
|
1302
1399
|
// HMR's `HotUpdateChunk`s reach this hook but are not output chunks,
|
|
1303
1400
|
// so extracting `.html` for them would emit stray hot-update files.
|
|
1304
1401
|
// `CssModulesPlugin` early-returns for the same reason.
|
|
1305
|
-
if (chunk
|
|
1402
|
+
if (chunk.isHotUpdate()) return result;
|
|
1306
1403
|
const { chunkGraph } = compilation;
|
|
1307
1404
|
const modules =
|
|
1308
1405
|
chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
@@ -1490,11 +1587,10 @@ class HtmlModulesPlugin {
|
|
|
1490
1587
|
// Scope-hoisted HTML loses HTML_TYPE on the ConcatenatedModule, but its
|
|
1491
1588
|
// JS export can still carry unresolved sentinels that need this path.
|
|
1492
1589
|
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
|
1493
|
-
if (module
|
|
1494
|
-
if (module
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
}
|
|
1590
|
+
if (module.is("html")) return true;
|
|
1591
|
+
if (module.getRootModule() === module) continue;
|
|
1592
|
+
for (const inner of module.getSourceModules()) {
|
|
1593
|
+
if (inner.is("html")) return true;
|
|
1498
1594
|
}
|
|
1499
1595
|
}
|
|
1500
1596
|
return false;
|