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
|
@@ -5,21 +5,28 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
8
|
+
const { CSS_TYPE } = require("../module/ModuleSourceTypeConstants");
|
|
9
9
|
|
|
10
|
-
/** @import { CssProcessOptions } from "../css/syntax" */
|
|
11
|
-
/** @import { EmbeddedSourceRenderer } from "./syntax" */
|
|
10
|
+
/** @import { CssProcessOptions } from "../css/syntax-parser" */
|
|
11
|
+
/** @import { EmbeddedSourceRenderer } from "./syntax-printer" */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* What this minifies inline CSS with: the CSS minifier's own options, so an
|
|
15
15
|
* inline declaration is held to the rules a `.css` asset is.
|
|
16
|
-
* @typedef {Pick<CssProcessOptions, "environment" | "convertLengthUnits" | "rewriteCustomProperties" | "transforms" | "unusedSymbols" | "pseudoClasses">} BuiltinEmbeddedRendererOptions
|
|
16
|
+
* @typedef {Pick<CssProcessOptions, "environment" | "convertLengthUnits" | "convertApproximateColors" | "dropOverriddenDeclarations" | "rewriteCustomProperties" | "transforms" | "unusedSymbols" | "pseudoClasses"> & BuiltinSvgOptions} BuiltinEmbeddedRendererOptions
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {object} BuiltinSvgOptions
|
|
21
|
+
* @property {boolean=} svg minify an SVG `data:` URL as the `.svg` assets are, wherever that is shorter (default false)
|
|
17
22
|
*/
|
|
18
23
|
|
|
19
24
|
// Both are loaded on first render rather than at module load: a document that
|
|
20
25
|
// embeds no CSS and no JSON pays for neither.
|
|
21
26
|
/** @type {typeof import("../css/syntax") | undefined} */
|
|
22
27
|
let _cssSyntax;
|
|
28
|
+
/** @type {typeof import("./syntax-parser") | undefined} */
|
|
29
|
+
let _htmlParser;
|
|
23
30
|
/** @type {typeof import("./syntax") | undefined} */
|
|
24
31
|
let _htmlSyntax;
|
|
25
32
|
|
|
@@ -63,23 +70,39 @@ const stripJsonWhitespace = (json) => {
|
|
|
63
70
|
|
|
64
71
|
/**
|
|
65
72
|
* The renderer webpack ships for what a document embeds: its own CSS minifier
|
|
66
|
-
* for a `<style>` or `style=""
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* none of this itself.
|
|
70
|
-
* @param {BuiltinEmbeddedRendererOptions=} options the CSS minifier's options, so an inline declaration is minified as the `.css` assets are
|
|
73
|
+
* for a `<style>` or `style=""`, `stripJsonWhitespace` for JSON and, with `svg`,
|
|
74
|
+
* the XML minifier for an SVG `data:` URL, declining every other language. A
|
|
75
|
+
* caller passes it where it has no renderer of its own, or behind one for the
|
|
76
|
+
* languages that one declines — the HTML printer minifies none of this itself.
|
|
77
|
+
* @param {BuiltinEmbeddedRendererOptions=} options the CSS minifier's options, so an inline declaration is minified as the `.css` assets are, and `svg`, whether an SVG `data:` URL is minified as the `.svg` assets are
|
|
71
78
|
* @returns {EmbeddedSourceRenderer} the renderer
|
|
72
79
|
*/
|
|
73
80
|
const builtinEmbeddedRenderer = (options = {}) => {
|
|
74
|
-
const { BLOCK_CONTENTS, JSON_TYPE } =
|
|
75
|
-
|
|
76
|
-
const
|
|
81
|
+
const { BLOCK_CONTENTS, JSON_TYPE, SVG_TYPE } =
|
|
82
|
+
_htmlParser || (_htmlParser = require("./syntax-parser"));
|
|
83
|
+
const { svg, ...cssOptions } = options;
|
|
84
|
+
const sheet = {
|
|
85
|
+
mode: /** @type {"minify"} */ ("minify"),
|
|
86
|
+
...cssOptions,
|
|
87
|
+
// A stylesheet's own `url(data:image/svg+xml,…)`, which `renderSvg` answers.
|
|
88
|
+
renderEmbeddedSource: svg
|
|
89
|
+
? /** @type {EmbeddedSourceRenderer} */ (
|
|
90
|
+
(source, info) =>
|
|
91
|
+
info.type === SVG_TYPE ? renderSvg(source) : undefined
|
|
92
|
+
)
|
|
93
|
+
: undefined
|
|
94
|
+
};
|
|
77
95
|
const block = { ...sheet, as: BLOCK_CONTENTS };
|
|
78
96
|
// A `style=""` repeats across a document far more often than it varies.
|
|
79
97
|
/** @type {Map<string, string>} */
|
|
80
98
|
const blocks = new Map();
|
|
81
|
-
|
|
99
|
+
/** @type {EmbeddedSourceRenderer} */
|
|
100
|
+
const render = (source, info) => {
|
|
82
101
|
if (info.type === JSON_TYPE) return stripJsonWhitespace(source);
|
|
102
|
+
// Only a whole `.svg` document: an inline `<svg>` subtree is HTML's to print.
|
|
103
|
+
if (info.type === SVG_TYPE) {
|
|
104
|
+
return svg && info.as === undefined ? renderSvg(source) : undefined;
|
|
105
|
+
}
|
|
83
106
|
if (info.type !== CSS_TYPE) return undefined;
|
|
84
107
|
const isBlock = info.as === BLOCK_CONTENTS;
|
|
85
108
|
if (isBlock) {
|
|
@@ -101,6 +124,30 @@ const builtinEmbeddedRenderer = (options = {}) => {
|
|
|
101
124
|
if (isBlock) blocks.set(source, code);
|
|
102
125
|
return code;
|
|
103
126
|
};
|
|
127
|
+
/**
|
|
128
|
+
* Minify an SVG document as the `.svg` assets are.
|
|
129
|
+
* @param {string} source an SVG document a `data:` URL holds
|
|
130
|
+
* @returns {string | undefined} it minified, or undefined where that is no shorter or it is not XML
|
|
131
|
+
*/
|
|
132
|
+
const renderSvg = (source) => {
|
|
133
|
+
const { SourceProcessor } =
|
|
134
|
+
_htmlSyntax || (_htmlSyntax = require("./syntax"));
|
|
135
|
+
let code;
|
|
136
|
+
try {
|
|
137
|
+
// `'` around an attribute, since the URL usually sits in `"` quotes.
|
|
138
|
+
code = new SourceProcessor().process(source, {
|
|
139
|
+
xml: true,
|
|
140
|
+
mode: "minify",
|
|
141
|
+
xmlQuote: "'",
|
|
142
|
+
renderEmbeddedSource: render
|
|
143
|
+
}).code;
|
|
144
|
+
} catch (_err) {
|
|
145
|
+
// Not well-formed, or offered while an HTML parse is running.
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
return code.length < source.length ? code : undefined;
|
|
149
|
+
};
|
|
150
|
+
return render;
|
|
104
151
|
};
|
|
105
152
|
|
|
106
153
|
module.exports.builtinEmbeddedRenderer = builtinEmbeddedRenderer;
|
package/lib/html/data.js
CHANGED
|
@@ -130,6 +130,7 @@ const REWRITABLE_ATTRIBUTES = new Set([
|
|
|
130
130
|
"blocking",
|
|
131
131
|
"cite",
|
|
132
132
|
"class",
|
|
133
|
+
"closedby",
|
|
133
134
|
"codebase",
|
|
134
135
|
"cols",
|
|
135
136
|
"colspan",
|
|
@@ -170,6 +171,7 @@ const REWRITABLE_ATTRIBUTES = new Set([
|
|
|
170
171
|
"part",
|
|
171
172
|
"ping",
|
|
172
173
|
"popover",
|
|
174
|
+
"popovertargetaction",
|
|
173
175
|
"poster",
|
|
174
176
|
"preload",
|
|
175
177
|
"referrerpolicy",
|
|
@@ -180,6 +182,7 @@ const REWRITABLE_ATTRIBUTES = new Set([
|
|
|
180
182
|
"scope",
|
|
181
183
|
"scrollamount",
|
|
182
184
|
"scrolldelay",
|
|
185
|
+
"shadowrootmode",
|
|
183
186
|
"size",
|
|
184
187
|
"sizes",
|
|
185
188
|
"span",
|
|
@@ -206,6 +209,7 @@ const REWRITABLE_ATTRIBUTES = new Set([
|
|
|
206
209
|
const ENUMERATED_ATTRIBUTE_NAMES = new Set([
|
|
207
210
|
"autocapitalize",
|
|
208
211
|
"autocomplete",
|
|
212
|
+
"closedby",
|
|
209
213
|
"contenteditable",
|
|
210
214
|
"crossorigin",
|
|
211
215
|
"decoding",
|
|
@@ -222,9 +226,11 @@ const ENUMERATED_ATTRIBUTE_NAMES = new Set([
|
|
|
222
226
|
"loading",
|
|
223
227
|
"method",
|
|
224
228
|
"popover",
|
|
229
|
+
"popovertargetaction",
|
|
225
230
|
"preload",
|
|
226
231
|
"referrerpolicy",
|
|
227
232
|
"scope",
|
|
233
|
+
"shadowrootmode",
|
|
228
234
|
"spellcheck",
|
|
229
235
|
"translate",
|
|
230
236
|
"type",
|
|
@@ -1582,7 +1588,7 @@ const QUIRKY_EXACT = new Set([
|
|
|
1582
1588
|
]);
|
|
1583
1589
|
|
|
1584
1590
|
/**
|
|
1585
|
-
* Elements whose text children serialize literally, no escaping. `textarea` / `title` are escapable, so they are not here.
|
|
1591
|
+
* Elements whose text children serialize literally, no escaping. `textarea` / `title` are escapable, so they are not here. `noscript` holds text only as a printed document is parsed, with scripting on.
|
|
1586
1592
|
* @type {Set<string>}
|
|
1587
1593
|
*/
|
|
1588
1594
|
const LITERAL_TEXT_PARENTS = new Set([
|
|
@@ -1592,6 +1598,7 @@ const LITERAL_TEXT_PARENTS = new Set([
|
|
|
1592
1598
|
"iframe",
|
|
1593
1599
|
"noembed",
|
|
1594
1600
|
"noframes",
|
|
1601
|
+
"noscript",
|
|
1595
1602
|
"plaintext"
|
|
1596
1603
|
]);
|
|
1597
1604
|
|
|
@@ -1767,8 +1774,12 @@ const ENUMERATED_KEYWORDS = Object.assign(Object.create(null), {
|
|
|
1767
1774
|
"text/plain"
|
|
1768
1775
|
]),
|
|
1769
1776
|
formmethod: new Set(["get", "post", "dialog"]),
|
|
1777
|
+
popovertargetaction: new Set(["toggle", "show", "hide"]),
|
|
1770
1778
|
type: new Set(["submit", "reset", "button"])
|
|
1771
1779
|
}),
|
|
1780
|
+
dialog: Object.assign(Object.create(null), {
|
|
1781
|
+
closedby: new Set(["any", "closerequest", "none"])
|
|
1782
|
+
}),
|
|
1772
1783
|
form: Object.assign(Object.create(null), {
|
|
1773
1784
|
autocomplete: new Set(["on", "off"]),
|
|
1774
1785
|
enctype: new Set([
|
|
@@ -1794,6 +1805,7 @@ const ENUMERATED_KEYWORDS = Object.assign(Object.create(null), {
|
|
|
1794
1805
|
"text/plain"
|
|
1795
1806
|
]),
|
|
1796
1807
|
formmethod: new Set(["get", "post", "dialog"]),
|
|
1808
|
+
popovertargetaction: new Set(["toggle", "show", "hide"]),
|
|
1797
1809
|
type: new Set([
|
|
1798
1810
|
"hidden",
|
|
1799
1811
|
"text",
|
|
@@ -1830,6 +1842,9 @@ const ENUMERATED_KEYWORDS = Object.assign(Object.create(null), {
|
|
|
1830
1842
|
td: Object.assign(Object.create(null), {
|
|
1831
1843
|
scope: new Set(["row", "col", "rowgroup", "colgroup"])
|
|
1832
1844
|
}),
|
|
1845
|
+
template: Object.assign(Object.create(null), {
|
|
1846
|
+
shadowrootmode: new Set(["open", "closed"])
|
|
1847
|
+
}),
|
|
1833
1848
|
th: Object.assign(Object.create(null), {
|
|
1834
1849
|
scope: new Set(["row", "col", "rowgroup", "colgroup"])
|
|
1835
1850
|
}),
|
|
@@ -1848,6 +1863,12 @@ const ENUMERATED_KEYWORDS = Object.assign(Object.create(null), {
|
|
|
1848
1863
|
})
|
|
1849
1864
|
});
|
|
1850
1865
|
|
|
1866
|
+
/**
|
|
1867
|
+
* `<element> <attribute>` for each enumerated attribute whose invalid value default names a different state from its missing value default, so a value matching no keyword may not be dropped as redundant.
|
|
1868
|
+
* @type {Set<string>}
|
|
1869
|
+
*/
|
|
1870
|
+
const INVALID_VALUE_DEFAULT_DIFFERS = new Set(["track kind"]);
|
|
1871
|
+
|
|
1851
1872
|
/**
|
|
1852
1873
|
* Elements `removeEmptyElements` never drops: with no children and no attributes each is still doing its job, so an empty one is not a leftover.
|
|
1853
1874
|
* @type {Set<string>}
|
|
@@ -1991,6 +2012,7 @@ module.exports.IGNORED_BODY_TABLE_STARTS = IGNORED_BODY_TABLE_STARTS;
|
|
|
1991
2012
|
module.exports.IMPLIED = IMPLIED;
|
|
1992
2013
|
module.exports.IMPLIED_THOROUGH = IMPLIED_THOROUGH;
|
|
1993
2014
|
module.exports.INTEGER_ATTRIBUTES = INTEGER_ATTRIBUTES;
|
|
2015
|
+
module.exports.INVALID_VALUE_DEFAULT_DIFFERS = INVALID_VALUE_DEFAULT_DIFFERS;
|
|
1994
2016
|
module.exports.IN_HEAD_NOSCRIPT_PASSTHROUGH = IN_HEAD_NOSCRIPT_PASSTHROUGH;
|
|
1995
2017
|
module.exports.IN_TABLE_IGNORED_ENDS = IN_TABLE_IGNORED_ENDS;
|
|
1996
2018
|
module.exports.JAVASCRIPT_SCRIPT_TYPES = JAVASCRIPT_SCRIPT_TYPES;
|
package/lib/html/htmlMinify.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @import { HtmlPrintOptions } from "../html/syntax" */
|
|
9
|
-
/** @import { CssEnvironment } from "../css/syntax" */
|
|
8
|
+
/** @import { HtmlPrintOptions, HtmlTransformOptions } from "../html/syntax-printer" */
|
|
9
|
+
/** @import { CssEnvironment, CssTransformOptions } from "../css/syntax-parser" */
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* What a renderer made of one embedded body: the minified text, and anything it
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
* @typedef {(source: string, info: { type: string, hostType: string, as?: string }) => Promise<string | EmbeddedSourceResult | undefined> | string | EmbeddedSourceResult | undefined} AsyncEmbeddedSourceRenderer
|
|
20
20
|
*/
|
|
21
21
|
/** @import { RawSourceMap } from "webpack-sources" */
|
|
22
|
+
/** @import { DeferredEmbeddedSource } from "../util/dataURL" */
|
|
23
|
+
/** @import { HtmlPath } from "./syntax-parser" */
|
|
24
|
+
/** @typedef {import("../util/extractComments").PluginExtractComments} ExtractCommentsOption */
|
|
25
|
+
/** @typedef {import("../../declarations/WebpackOptions").OptimizationMinimizeExtractComments} MinimizeExtractComments */
|
|
22
26
|
|
|
23
27
|
/**
|
|
24
28
|
* A `minify` function for `minimizer-webpack-plugin` (passed as its `minify`
|
|
@@ -35,26 +39,26 @@
|
|
|
35
39
|
* re-resolves in the worker — via the installed package, or the dev self-link.
|
|
36
40
|
* @param {{ [file: string]: string | Buffer }} input a single `{ filename: code }` entry; a `Buffer` is read as UTF-8
|
|
37
41
|
* @param {(RawSourceMap | undefined)=} sourceMap input source map (unused: safe serialize keeps positions token-coarse, so no map is produced yet)
|
|
38
|
-
* @param {Omit<HtmlPrintOptions, "renderEmbeddedSource" | "deferEmbeddedSource"> & { environment?: CssEnvironment, css?: { convertLengthUnits?: boolean, rewriteCustomProperties?: boolean, unusedSymbols?: string[], pseudoClasses?: { [name: string]: string } }, minifyConditionalComments?: boolean, renderEmbeddedSource?: AsyncEmbeddedSourceRenderer }=} minimizerOptions minimizer options — `environment` and `css` (`optimization.minimize.css`, whole) reach the CSS minifier this runs over inline CSS; the rest is `optimization.minimize.html`. The two stand apart rather than merged: both languages name a `quotes` and a `comments`, and one flat object would hand each the other's answer. `renderEmbeddedSource` minifies source this document embeds and may be asynchronous — one parse serves both it and the output. What it declines this minifies itself, for the languages webpack ships a minifier for
|
|
39
|
-
* @
|
|
42
|
+
* @param {Omit<HtmlPrintOptions, "renderEmbeddedSource" | "deferEmbeddedSource"> & { environment?: CssEnvironment, css?: { convertLengthUnits?: boolean, convertApproximateColors?: boolean, dropOverriddenDeclarations?: boolean, rewriteCustomProperties?: boolean, unusedSymbols?: string[], pseudoClasses?: { [name: string]: string } } & CssTransformOptions, minifyConditionalComments?: boolean, extractComments?: MinimizeExtractComments, renderEmbeddedSource?: AsyncEmbeddedSourceRenderer, svg?: boolean } & HtmlTransformOptions=} minimizerOptions minimizer options — `environment` and `css` (`optimization.minimize.css`, whole) reach the CSS minifier this runs over inline CSS; the rest is `optimization.minimize.html`. The two stand apart rather than merged: both languages name a `quotes` and a `comments`, and one flat object would hand each the other's answer. `renderEmbeddedSource` minifies source this document embeds and may be asynchronous — one parse serves both it and the output. What it declines this minifies itself, for the languages webpack ships a minifier for, SVG `data:` URLs among them when `svg` is set
|
|
43
|
+
* @param {ExtractCommentsOption=} extractComments the plugin's `extractComments`, read where `minimize.html.extractComments` is not set
|
|
44
|
+
* @returns {Promise<{ code: string, extractedComments?: string[], warnings?: (Error | string)[], errors?: (Error | string)[] }>} the minified HTML, the comments taken out of it, and what a renderer reported over what it embeds
|
|
40
45
|
*/
|
|
41
|
-
const htmlMinify = async (
|
|
46
|
+
const htmlMinify = async (
|
|
47
|
+
input,
|
|
48
|
+
sourceMap,
|
|
49
|
+
minimizerOptions = {},
|
|
50
|
+
extractComments = undefined
|
|
51
|
+
) => {
|
|
42
52
|
const webpack = /** @type {typeof import("../index")} */ (
|
|
43
53
|
// eslint-disable-next-line import/no-extraneous-dependencies -- webpack self-require, re-resolved inside the worker
|
|
44
54
|
require(/** @type {string} */ ("webpack"))
|
|
45
55
|
);
|
|
46
56
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
collectEmbeddedDiagnostics,
|
|
53
|
-
embeddedText,
|
|
54
|
-
SourceProcessor,
|
|
55
|
-
NodeType,
|
|
56
|
-
pickTransforms
|
|
57
|
-
} = webpack.html.syntax;
|
|
57
|
+
const { SourceProcessor, parser } = webpack.html.syntax;
|
|
58
|
+
const { NodeType, pickTransforms } = parser;
|
|
59
|
+
const { builtinEmbeddedRenderer } = webpack.html;
|
|
60
|
+
const { askEmbeddedRenderer, collectEmbeddedDiagnostics, embeddedText } =
|
|
61
|
+
webpack.util.dataURL;
|
|
58
62
|
const [[, given]] = Object.entries(input);
|
|
59
63
|
// The plugin hands a text minifier a string; the type admits an image's bytes.
|
|
60
64
|
const code = typeof given === "string" ? given : given.toString("utf8");
|
|
@@ -73,7 +77,8 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
73
77
|
sortAttributes,
|
|
74
78
|
sortTokenLists,
|
|
75
79
|
removeImpliedTags,
|
|
76
|
-
renderEmbeddedSource
|
|
80
|
+
renderEmbeddedSource,
|
|
81
|
+
svg
|
|
77
82
|
} = minimizerOptions;
|
|
78
83
|
// One list for the whole run: a nested document reaches this same collector,
|
|
79
84
|
// so what a renderer reports inside an `<iframe srcdoc>` is reported once at
|
|
@@ -85,10 +90,13 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
85
90
|
const builtin = builtinEmbeddedRenderer({
|
|
86
91
|
environment,
|
|
87
92
|
convertLengthUnits: css.convertLengthUnits,
|
|
93
|
+
convertApproximateColors: css.convertApproximateColors,
|
|
94
|
+
dropOverriddenDeclarations: css.dropOverriddenDeclarations,
|
|
88
95
|
rewriteCustomProperties: css.rewriteCustomProperties,
|
|
89
96
|
unusedSymbols: css.unusedSymbols,
|
|
90
97
|
pseudoClasses: css.pseudoClasses,
|
|
91
|
-
transforms: webpack.css.syntax.pickTransforms(css)
|
|
98
|
+
transforms: webpack.css.syntax.parser.pickTransforms(css),
|
|
99
|
+
svg
|
|
92
100
|
});
|
|
93
101
|
// One set of options, handed to the document pass and to each conditional
|
|
94
102
|
// comment's body below.
|
|
@@ -105,14 +113,15 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
105
113
|
sortTokenLists,
|
|
106
114
|
removeImpliedTags
|
|
107
115
|
};
|
|
108
|
-
// Handed each body the print offers,
|
|
109
|
-
//
|
|
110
|
-
//
|
|
116
|
+
// Handed each body the print offers, keeping what it reported: the element or
|
|
117
|
+
// attribute around one is written from that answer, and a body declined or
|
|
118
|
+
// thrown on is spelled as an untapped run spells it.
|
|
119
|
+
|
|
111
120
|
// A caller's renderer is asked first; whatever it declines this minifies
|
|
112
121
|
// itself, for the languages webpack ships a minifier for.
|
|
113
122
|
const renderer = async (
|
|
114
123
|
/** @type {string} */ source,
|
|
115
|
-
/** @type {
|
|
124
|
+
/** @type {DeferredEmbeddedSource} */ hole
|
|
116
125
|
) => {
|
|
117
126
|
if (renderEmbeddedSource !== undefined) {
|
|
118
127
|
const answered = embeddedText(
|
|
@@ -130,20 +139,27 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
130
139
|
};
|
|
131
140
|
/**
|
|
132
141
|
* @param {string} text a whole document
|
|
142
|
+
* @param {typeof printOptions} options the print's options
|
|
133
143
|
* @returns {Promise<string>} the same document, printed
|
|
134
144
|
*/
|
|
135
|
-
const printDocument = async (text) => {
|
|
145
|
+
const printDocument = async (text, options) => {
|
|
136
146
|
// The built-in renderer is synchronous, so with no caller's renderer only
|
|
137
|
-
// a nested document needs the async pass —
|
|
138
|
-
|
|
147
|
+
// a nested document needs the async pass — an `<iframe srcdoc>` or a
|
|
148
|
+
// `data:` URL naming HTML, or SVG with `svg`; with none spelled, none is there.
|
|
149
|
+
if (
|
|
150
|
+
renderEmbeddedSource === undefined &&
|
|
151
|
+
!(svg ? /srcdoc|data:[^,]*(?:html|svg)/i : /srcdoc|data:[^,]*html/i).test(
|
|
152
|
+
text
|
|
153
|
+
)
|
|
154
|
+
) {
|
|
139
155
|
return new SourceProcessor().process(text, {
|
|
140
|
-
...
|
|
156
|
+
...options,
|
|
141
157
|
renderEmbeddedSource: builtin
|
|
142
158
|
}).code;
|
|
143
159
|
}
|
|
144
160
|
return (
|
|
145
161
|
await new SourceProcessor().processAsync(text, {
|
|
146
|
-
...
|
|
162
|
+
...options,
|
|
147
163
|
renderEmbeddedSource: renderer
|
|
148
164
|
})
|
|
149
165
|
).code;
|
|
@@ -151,13 +167,15 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
151
167
|
|
|
152
168
|
// Recursion goes through this local name, never the module's own: the plugin
|
|
153
169
|
// ships this function to its workers as source, where that binding is absent.
|
|
154
|
-
|
|
155
|
-
//
|
|
170
|
+
|
|
171
|
+
// A marker cannot cross a parse, the preprocessor turning its NUL into U+FFFD,
|
|
172
|
+
// so each nested document is finished before it is spliced in.
|
|
156
173
|
/**
|
|
157
174
|
* @param {string} text a whole document
|
|
175
|
+
* @param {typeof printOptions=} options the print's options, the asset's own for the outermost document
|
|
158
176
|
* @returns {Promise<string>} the same document, minified
|
|
159
177
|
*/
|
|
160
|
-
const minifyDocument = async (text) => {
|
|
178
|
+
const minifyDocument = async (text, options = printOptions) => {
|
|
161
179
|
// Put back into the source, not the output: the printer respells an
|
|
162
180
|
// attribute value, so the recorded text is not what the output holds.
|
|
163
181
|
let source = text;
|
|
@@ -169,7 +187,7 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
169
187
|
if (wantsConditional) {
|
|
170
188
|
/** @type {{ start: number, end: number, value: string }[]} */
|
|
171
189
|
const found = [];
|
|
172
|
-
/** @type {{ [type: number]: (path:
|
|
190
|
+
/** @type {{ [type: number]: (path: HtmlPath) => void }} */
|
|
173
191
|
const visitors = {};
|
|
174
192
|
|
|
175
193
|
visitors[NodeType.Comment] = (path) => {
|
|
@@ -185,8 +203,9 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
185
203
|
return;
|
|
186
204
|
}
|
|
187
205
|
|
|
188
|
-
const
|
|
189
|
-
const
|
|
206
|
+
const [commentStart] = path.range();
|
|
207
|
+
const start = commentStart + opened + 2;
|
|
208
|
+
const end = commentStart + closes;
|
|
190
209
|
|
|
191
210
|
found.push({
|
|
192
211
|
start,
|
|
@@ -209,17 +228,53 @@ const htmlMinify = async (input, sourceMap, minimizerOptions = {}) => {
|
|
|
209
228
|
// `process` parses once, and with `mode: "minify"` its walk also prints the
|
|
210
229
|
// safely minified serialization — no second parse. No `source` is named, so no
|
|
211
230
|
// map is built: the HTML serialize is token-coarse and only the code is used.
|
|
212
|
-
return printDocument(source);
|
|
231
|
+
return printDocument(source, options);
|
|
232
|
+
};
|
|
233
|
+
// Only the asset's own document gives comments up: a nested one keeps them,
|
|
234
|
+
// as an inline `<style>` does, and its places are not the asset's.
|
|
235
|
+
const extraction = webpack.util.extractComments.extractComments(
|
|
236
|
+
minimizerOptions.extractComments === undefined
|
|
237
|
+
? extractComments
|
|
238
|
+
: minimizerOptions.extractComments,
|
|
239
|
+
printOptions.transforms === undefined
|
|
240
|
+
? undefined
|
|
241
|
+
: printOptions.transforms.comments,
|
|
242
|
+
{
|
|
243
|
+
open: "<!--",
|
|
244
|
+
close: "-->",
|
|
245
|
+
// Every comment the HTML minifier reaches here is inert.
|
|
246
|
+
some: () => false,
|
|
247
|
+
unstated: () => false
|
|
248
|
+
}
|
|
249
|
+
);
|
|
250
|
+
const result = {
|
|
251
|
+
code: await minifyDocument(
|
|
252
|
+
code,
|
|
253
|
+
extraction === undefined
|
|
254
|
+
? printOptions
|
|
255
|
+
: {
|
|
256
|
+
...printOptions,
|
|
257
|
+
transforms: {
|
|
258
|
+
...printOptions.transforms,
|
|
259
|
+
comments: /** @type {(comment: string) => boolean} */ (
|
|
260
|
+
extraction.comments
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
)
|
|
213
265
|
};
|
|
214
|
-
const
|
|
266
|
+
const answer =
|
|
267
|
+
extraction === undefined || extraction.extracted.length === 0
|
|
268
|
+
? result
|
|
269
|
+
: { ...result, extractedComments: extraction.extracted };
|
|
215
270
|
|
|
216
271
|
return reported.length === 0
|
|
217
|
-
?
|
|
218
|
-
: { ...
|
|
272
|
+
? answer
|
|
273
|
+
: { ...answer, ...collectEmbeddedDiagnostics(reported) };
|
|
219
274
|
};
|
|
220
275
|
|
|
221
276
|
// Worker-safe (see the body's in-worker `require`), so it may run in the shared
|
|
222
|
-
// worker-thread pool alongside
|
|
277
|
+
// worker-thread pool alongside jsMinify.
|
|
223
278
|
htmlMinify.supportsWorkerThreads = () => true;
|
|
224
279
|
|
|
225
280
|
/**
|
|
@@ -236,24 +291,38 @@ htmlMinify.getTypes = () => ["html"];
|
|
|
236
291
|
* `<iframe srcdoc>` holds, and every `style=""` as the block's contents it is.
|
|
237
292
|
* @returns {string[]} the languages
|
|
238
293
|
*/
|
|
239
|
-
htmlMinify.getEmbeddedTypes = () =>
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
294
|
+
htmlMinify.getEmbeddedTypes = () => [
|
|
295
|
+
// A copy of the shared list, as `cssMinify` makes one. Read from there and
|
|
296
|
+
// not off the parser, which the minimizer would then load — 1.9 MB — to
|
|
297
|
+
// answer this for a build holding no HTML at all.
|
|
298
|
+
.../** @type {typeof import("../index")} */ (
|
|
243
299
|
// eslint-disable-next-line import/no-extraneous-dependencies -- webpack self-require, as the body does
|
|
244
|
-
require(/** @type {string} */ ("webpack"))
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
};
|
|
300
|
+
require(/** @type {string} */ ("webpack"))
|
|
301
|
+
).util.dataURL.EMBEDDED_LANGUAGES
|
|
302
|
+
];
|
|
248
303
|
|
|
249
|
-
//
|
|
250
|
-
//
|
|
251
|
-
//
|
|
252
|
-
// plugin / worker pool.
|
|
304
|
+
// Sharing one `minimizer-webpack-plugin` instance, each asset reaches only the
|
|
305
|
+
// minify functions whose `filter` accepts it. This claims HTML, so jsMinify and
|
|
306
|
+
// cssMinify coexist with it in one worker pool.
|
|
253
307
|
/**
|
|
254
308
|
* @param {string} name asset filename
|
|
255
309
|
* @returns {boolean} true for HTML assets
|
|
256
310
|
*/
|
|
257
|
-
htmlMinify.filter = (name) =>
|
|
311
|
+
htmlMinify.filter = (name) => /^[^?#]*\.html(?:[?#].*)?$/i.test(name);
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* The comment the minimizer plugin writes its `extractComments` banner as: a
|
|
315
|
+
* `/*!` line would be text in the document.
|
|
316
|
+
* @param {string} banner the banner's text
|
|
317
|
+
* @returns {string} the banner as an HTML comment
|
|
318
|
+
*/
|
|
319
|
+
htmlMinify.formatBanner = (banner) => `<!-- ${banner} -->`;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Where the minimizer plugin puts its `extractComments` banner: at the end, so
|
|
323
|
+
* the doctype stays first for an engine that reads anything before it oddly.
|
|
324
|
+
* @returns {"end"} the position
|
|
325
|
+
*/
|
|
326
|
+
htmlMinify.getBannerPosition = () => /** @type {const} */ ("end");
|
|
258
327
|
|
|
259
328
|
module.exports = htmlMinify;
|