webpack 5.111.1 → 5.112.1
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/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- 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 +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -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} +6 -6
- 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 +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- 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} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- 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 +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- 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 -11
- 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} +14 -11
- 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 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- 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} +9 -6
- 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} +10 -11
- 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} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- 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} +21 -17
- 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 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- 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} +25 -22
- 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} +20 -20
- 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} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- 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} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- 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} +22 -25
- 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} +122 -103
- 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 +17 -19
- 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} +82 -53
- 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} +155 -27
- 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 +23 -21
- 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 +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- 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/errors/AbstractMethodError.js +1 -1
- 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} +9 -6
- 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/errors/JSONParseError.js +4 -4
- 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 +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- 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} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- 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 +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- 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 +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -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 +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- 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 +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- 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 +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- 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} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- 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 +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- 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} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -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 +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- 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} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- 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 +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- 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 +19 -13
- 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 +22 -13
- 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 +66 -45
- 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 +50 -17
- 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/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- 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 +7 -11
- 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} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -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 +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- 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 +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -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} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- 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 +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- 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 +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- 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 +35 -28
- 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 +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- 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 +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- 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 +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- 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 +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- 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}/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
package/lib/util/globUtils.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const path = require("path");
|
|
9
|
-
const { join: joinPath } = require("
|
|
9
|
+
const { join: joinPath } = require("../fs/fs");
|
|
10
10
|
const {
|
|
11
11
|
ABSOLUTE_PATH_REGEXP,
|
|
12
12
|
WINDOWS_PATH_SEPARATOR_REGEXP
|
|
@@ -15,13 +15,13 @@ const memoize = require("./memoize");
|
|
|
15
15
|
|
|
16
16
|
// watchpack's glob-to-regexp core, loaded only when a glob is translated
|
|
17
17
|
const getGlobToRegExpSource = memoize(
|
|
18
|
-
() =>
|
|
19
|
-
/** @type {{ util: { globToRegExp: (glob: string) => string } }} */ (
|
|
20
|
-
/** @type {unknown} */ (require("watchpack"))
|
|
21
|
-
).util.globToRegExp
|
|
18
|
+
() => require("watchpack").util.globToRegExp
|
|
22
19
|
);
|
|
23
20
|
|
|
24
21
|
/** @typedef {{ caseSensitive?: boolean, requireLiteralLeadingDot?: boolean }} GlobMatchOptions */
|
|
22
|
+
/** @typedef {(str: string) => boolean} GlobMatcher */
|
|
23
|
+
/** @typedef {import("../../declarations/WebpackOptions").GlobCondition} GlobCondition */
|
|
24
|
+
/** @import Module from "../module/Module" */
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* @param {string} s string
|
|
@@ -518,10 +518,12 @@ const segmentGlobToRegExpSource = (segment) => {
|
|
|
518
518
|
* `path.matchesGlob` semantics: `*`, `?` and classes stay within a segment,
|
|
519
519
|
* a whole-segment `**` spans segments, and neither crosses a dot segment.
|
|
520
520
|
* @param {string} glob brace-free glob
|
|
521
|
+
* @param {boolean} lazy whether `**` spans as few segments as it can
|
|
521
522
|
* @returns {string} regexp source without anchors
|
|
522
523
|
*/
|
|
523
|
-
const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
524
|
+
const braceFreeGlobToPathRegExpSource = (glob, lazy) => {
|
|
524
525
|
const segments = optimizeGlobSegments(glob.split("/"));
|
|
526
|
+
const repeat = lazy ? "*?" : "*";
|
|
525
527
|
let source = "";
|
|
526
528
|
let needSeparator = false;
|
|
527
529
|
for (let i = 0; i < segments.length; i++) {
|
|
@@ -536,8 +538,8 @@ const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
|
536
538
|
source += isLast
|
|
537
539
|
? `${needSeparator ? "/" : ""}(?:${NON_DOT_SEGMENT}(?:/${NON_DOT_SEGMENT})*)?`
|
|
538
540
|
: needSeparator
|
|
539
|
-
? `(?:/${NON_DOT_SEGMENT})
|
|
540
|
-
: `/?(?:${NON_DOT_SEGMENT}/)
|
|
541
|
+
? `(?:/${NON_DOT_SEGMENT})${repeat}`
|
|
542
|
+
: `/?(?:${NON_DOT_SEGMENT}/)${repeat}`;
|
|
541
543
|
needSeparator = !isLast && needSeparator;
|
|
542
544
|
continue;
|
|
543
545
|
}
|
|
@@ -553,17 +555,10 @@ const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
|
553
555
|
};
|
|
554
556
|
|
|
555
557
|
/**
|
|
556
|
-
* Compiles a glob into a matcher over OS-independent paths: `\` is a path
|
|
557
|
-
* separator in both the pattern and the tested path (never an escape, so a
|
|
558
|
-
* pattern built with `path.resolve` works everywhere; use `[*]` to match a
|
|
559
|
-
* literal `*`), and a relative pattern matches at any depth. Matching follows
|
|
560
|
-
* `path.matchesGlob`, except where its minimatch shows through — see the
|
|
561
|
-
* divergences listed above the corpus in `test/unitCases/globUtils.unittest.js`.
|
|
562
558
|
* @param {string} pattern glob pattern
|
|
563
|
-
* @
|
|
564
|
-
* @returns {((str: string) => boolean) | null} matcher, null for un-compilable patterns
|
|
559
|
+
* @returns {string} regexp source matching a normalized path, unanchored
|
|
565
560
|
*/
|
|
566
|
-
const
|
|
561
|
+
const pathGlobToRegExpSource = (pattern) => {
|
|
567
562
|
let normalizedPattern = normalizePathSeparatorsForPath(pattern);
|
|
568
563
|
while (normalizedPattern.startsWith("./")) {
|
|
569
564
|
normalizedPattern = normalizedPattern.slice(2);
|
|
@@ -574,10 +569,40 @@ const createPathGlobMatcher = (pattern, options = {}) => {
|
|
|
574
569
|
) {
|
|
575
570
|
normalizedPattern = `**/${normalizedPattern}`;
|
|
576
571
|
}
|
|
577
|
-
const sources = expandGlobBraces(normalizedPattern).map(
|
|
578
|
-
braceFreeGlobToPathRegExpSource
|
|
572
|
+
const sources = expandGlobBraces(normalizedPattern).map((glob) =>
|
|
573
|
+
braceFreeGlobToPathRegExpSource(glob, false)
|
|
579
574
|
);
|
|
580
|
-
|
|
575
|
+
return sources.length === 1 ? sources[0] : `(?:${sources.join("|")})`;
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
// a separator in a path regexp source, which a native path may spell `\`
|
|
579
|
+
const PATH_SOURCE_SEPARATOR_REGEXP = /\\[\s\S]|\[\^\/|\//g;
|
|
580
|
+
/** @type {Record<string, string>} */
|
|
581
|
+
const PATH_SOURCE_SEPARATORS = { "/": "[\\\\/]", "[^/": "[^\\\\/" };
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* @param {string} source regexp source over `/`-separated paths
|
|
585
|
+
* @returns {string} the same source, also accepting `\` as a separator
|
|
586
|
+
*/
|
|
587
|
+
const toNativePathSource = (source) =>
|
|
588
|
+
source.replace(
|
|
589
|
+
PATH_SOURCE_SEPARATOR_REGEXP,
|
|
590
|
+
(match) => PATH_SOURCE_SEPARATORS[match] || match
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Compiles a glob into a matcher over OS-independent paths: `\` is a path
|
|
595
|
+
* separator in both the pattern and the tested path (never an escape, so a
|
|
596
|
+
* pattern built with `path.resolve` works everywhere; use `[*]` to match a
|
|
597
|
+
* literal `*`), and a relative pattern matches at any depth. Matching follows
|
|
598
|
+
* `path.matchesGlob`, except where its minimatch shows through — see the
|
|
599
|
+
* divergences listed above the corpus in `test/unitCases/globUtils.unittest.js`.
|
|
600
|
+
* @param {string} pattern glob pattern
|
|
601
|
+
* @param {GlobMatchOptions=} options options
|
|
602
|
+
* @returns {((str: string) => boolean) | null} matcher, null for un-compilable patterns
|
|
603
|
+
*/
|
|
604
|
+
const createPathGlobMatcher = (pattern, options = {}) => {
|
|
605
|
+
const source = pathGlobToRegExpSource(pattern);
|
|
581
606
|
/** @type {RegExp} */
|
|
582
607
|
let regexp;
|
|
583
608
|
try {
|
|
@@ -598,6 +623,153 @@ const createPathGlobMatcher = (pattern, options = {}) => {
|
|
|
598
623
|
};
|
|
599
624
|
};
|
|
600
625
|
|
|
626
|
+
/**
|
|
627
|
+
* @param {GlobMatcher[]} positive patterns that select
|
|
628
|
+
* @param {GlobMatcher[]} negative patterns that subtract
|
|
629
|
+
* @returns {GlobMatcher} matcher
|
|
630
|
+
*/
|
|
631
|
+
const combineGlobMatchers = (positive, negative) => {
|
|
632
|
+
/** @type {GlobMatcher} */
|
|
633
|
+
const matchPositive =
|
|
634
|
+
positive.length === 0
|
|
635
|
+
? () => true
|
|
636
|
+
: positive.length === 1
|
|
637
|
+
? positive[0]
|
|
638
|
+
: (str) => positive.some((match) => match(str));
|
|
639
|
+
if (negative.length === 0) return matchPositive;
|
|
640
|
+
/** @type {GlobMatcher} */
|
|
641
|
+
const matchNegative =
|
|
642
|
+
negative.length === 1
|
|
643
|
+
? negative[0]
|
|
644
|
+
: (str) => negative.some((match) => match(str));
|
|
645
|
+
return (str) => matchPositive(str) && !matchNegative(str);
|
|
646
|
+
};
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Compiles glob patterns into one matcher: patterns are OR-ed and a `!` prefix
|
|
650
|
+
* subtracts, as in `module.rules[].glob`.
|
|
651
|
+
* @param {string[]} globs glob patterns
|
|
652
|
+
* @param {(pattern: string, index: number) => never} onInvalid throws for an un-compilable pattern
|
|
653
|
+
* @returns {GlobMatcher} matcher
|
|
654
|
+
*/
|
|
655
|
+
const compileGlobList = (globs, onInvalid) => {
|
|
656
|
+
/** @type {GlobMatcher[]} */
|
|
657
|
+
const positive = [];
|
|
658
|
+
/** @type {GlobMatcher[]} */
|
|
659
|
+
const negative = [];
|
|
660
|
+
for (let i = 0; i < globs.length; i++) {
|
|
661
|
+
const pattern = globs[i];
|
|
662
|
+
const negated = pattern.startsWith("!");
|
|
663
|
+
const match = createPathGlobMatcher(negated ? pattern.slice(1) : pattern);
|
|
664
|
+
if (match === null) onInvalid(pattern, i);
|
|
665
|
+
(negated ? negative : positive).push(/** @type {GlobMatcher} */ (match));
|
|
666
|
+
}
|
|
667
|
+
return combineGlobMatchers(positive, negative);
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* @param {string} pattern glob pattern
|
|
672
|
+
* @returns {never} never returns
|
|
673
|
+
*/
|
|
674
|
+
const throwInvalidGlob = (pattern) => {
|
|
675
|
+
throw new Error(`Invalid glob pattern: ${pattern}`);
|
|
676
|
+
};
|
|
677
|
+
|
|
678
|
+
/** @type {WeakMap<GlobCondition, GlobMatcher>} */
|
|
679
|
+
const globConditionMatchers = new WeakMap();
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Tests a path against `{ glob }`, compiled once per condition object.
|
|
683
|
+
* @param {GlobCondition} condition glob condition
|
|
684
|
+
* @param {string} str path
|
|
685
|
+
* @returns {boolean} true, when the path matches
|
|
686
|
+
*/
|
|
687
|
+
const matchGlobCondition = (condition, str) => {
|
|
688
|
+
let match = globConditionMatchers.get(condition);
|
|
689
|
+
if (match === undefined) {
|
|
690
|
+
match = compileGlobList(
|
|
691
|
+
Array.isArray(condition.glob) ? condition.glob : [condition.glob],
|
|
692
|
+
throwInvalidGlob
|
|
693
|
+
);
|
|
694
|
+
globConditionMatchers.set(condition, match);
|
|
695
|
+
}
|
|
696
|
+
return match(str);
|
|
697
|
+
};
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* Tests a module's `nameForCondition()` against `{ glob }`; a module without one never matches.
|
|
701
|
+
* @param {GlobCondition} condition glob condition
|
|
702
|
+
* @param {Module} module module
|
|
703
|
+
* @returns {boolean} true, when the module matches
|
|
704
|
+
*/
|
|
705
|
+
const matchModuleGlobCondition = (condition, module) => {
|
|
706
|
+
const name = module.nameForCondition();
|
|
707
|
+
return name ? matchGlobCondition(condition, name) : false;
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* Compiles each relative path of a path option as a glob, leaving absolute paths and RegExps as they are.
|
|
712
|
+
* @template T, R
|
|
713
|
+
* @param {(T | string)[]} paths option value
|
|
714
|
+
* @param {(pattern: string) => R} compile glob compiler
|
|
715
|
+
* @returns {(T | R | string)[]} paths with relative globs compiled
|
|
716
|
+
*/
|
|
717
|
+
const compileRelativeGlobPaths = (paths, compile) =>
|
|
718
|
+
paths.map((item) =>
|
|
719
|
+
typeof item === "string" && !ABSOLUTE_PATH_REGEXP.test(item)
|
|
720
|
+
? compile(item)
|
|
721
|
+
: item
|
|
722
|
+
);
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
* Compiles a glob into a RegExp matching what `createPathGlobMatcher` matches,
|
|
726
|
+
* for an option handed to code that only calls `.test()` on a native path.
|
|
727
|
+
* @param {string} pattern glob pattern
|
|
728
|
+
* @returns {RegExp} regexp
|
|
729
|
+
*/
|
|
730
|
+
const createPathGlobRegExp = (pattern) =>
|
|
731
|
+
new RegExp(`^${toNativePathSource(pathGlobToRegExpSource(pattern))}$`);
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* Compiles a relative glob into a RegExp whose first group is the outermost
|
|
735
|
+
* directory it matches at the start of a path, trailing separator included — the
|
|
736
|
+
* shape `snapshot.managedPaths` and its siblings read. Like `module.rules[].glob`
|
|
737
|
+
* it matches at any depth, unless a leading `./` or `../` anchors it to `context`.
|
|
738
|
+
* @param {string} pattern relative glob pattern
|
|
739
|
+
* @param {string} context directory a `./` or `../` pattern is relative to
|
|
740
|
+
* @returns {RegExp} prefix regexp
|
|
741
|
+
*/
|
|
742
|
+
const createPathGlobPrefixRegExp = (pattern, context) => {
|
|
743
|
+
let glob = normalizePathSeparatorsForPath(pattern);
|
|
744
|
+
let baseSource = "";
|
|
745
|
+
if (glob.startsWith("./") || glob.startsWith("../")) {
|
|
746
|
+
let base = context;
|
|
747
|
+
for (;;) {
|
|
748
|
+
if (glob.startsWith("./")) {
|
|
749
|
+
glob = glob.slice(2);
|
|
750
|
+
} else if (glob.startsWith("../")) {
|
|
751
|
+
base = path.dirname(base);
|
|
752
|
+
glob = glob.slice(3);
|
|
753
|
+
} else {
|
|
754
|
+
break;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
for (const c of path.join(base, "/")) {
|
|
758
|
+
baseSource += c === "/" || c === "\\" ? "[\\\\/]" : quoteRegExpChar(c);
|
|
759
|
+
}
|
|
760
|
+
} else if (!glob.startsWith("**/")) {
|
|
761
|
+
glob = `**/${glob}`;
|
|
762
|
+
}
|
|
763
|
+
if (!glob.endsWith("/")) glob += "/";
|
|
764
|
+
const sources = expandGlobBraces(glob).map((brace) =>
|
|
765
|
+
braceFreeGlobToPathRegExpSource(brace, true)
|
|
766
|
+
);
|
|
767
|
+
const source = toNativePathSource(
|
|
768
|
+
sources.length === 1 ? sources[0] : `(?:${sources.join("|")})`
|
|
769
|
+
);
|
|
770
|
+
return new RegExp(`^(${baseSource}${source})`);
|
|
771
|
+
};
|
|
772
|
+
|
|
601
773
|
/**
|
|
602
774
|
* @param {string} path path
|
|
603
775
|
* @param {string} baseDir base directory
|
|
@@ -961,7 +1133,11 @@ const globPatternBaseReachesDir = (patterns, dirPath) => {
|
|
|
961
1133
|
|
|
962
1134
|
module.exports = {
|
|
963
1135
|
commonGlobBaseDir,
|
|
1136
|
+
compileGlobList,
|
|
1137
|
+
compileRelativeGlobPaths,
|
|
964
1138
|
createPathGlobMatcher,
|
|
1139
|
+
createPathGlobPrefixRegExp,
|
|
1140
|
+
createPathGlobRegExp,
|
|
965
1141
|
escapeGlobPattern,
|
|
966
1142
|
extractGlobBaseDir,
|
|
967
1143
|
getGlobToRegExpSource,
|
|
@@ -976,6 +1152,8 @@ module.exports = {
|
|
|
976
1152
|
isNonExhaustiveImportMetaGlobSkippedDir,
|
|
977
1153
|
joinImportMetaGlobFsPath,
|
|
978
1154
|
joinImportMetaGlobPath,
|
|
1155
|
+
matchGlobCondition,
|
|
1156
|
+
matchModuleGlobCondition,
|
|
979
1157
|
normalizePathSeparators,
|
|
980
1158
|
normalizePathSeparatorsForPath,
|
|
981
1159
|
patternHasExplicitDotFor,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @template T
|
|
10
|
+
* @typedef {import("./SourceProcessor").VisitorFn<T>} VisitorFn
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* @template T
|
|
14
|
+
* @typedef {import("./SourceProcessor").CompiledVisitorBucket<T>} CompiledVisitorBucket
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Empty every bucket of a compiled visitor map in place, so a dispatch loop
|
|
19
|
+
* running over one ends after the visitor that asked and none fires again.
|
|
20
|
+
* @template TPath
|
|
21
|
+
* @param {CompiledVisitorBucket<TPath>[]} map the map a walk dispatches from
|
|
22
|
+
* @returns {VisitorFn<TPath>[][]} each emptied list followed by its visitors, for {@link resumeVisitors}
|
|
23
|
+
*/
|
|
24
|
+
const haltVisitors = (map) => {
|
|
25
|
+
/** @type {VisitorFn<TPath>[][]} */
|
|
26
|
+
const halted = [];
|
|
27
|
+
for (let type = 0; type < map.length; type++) {
|
|
28
|
+
const bucket = map[type];
|
|
29
|
+
if (bucket === undefined) continue;
|
|
30
|
+
halted.push(bucket.enter, [...bucket.enter], bucket.exit, [...bucket.exit]);
|
|
31
|
+
bucket.enter.length = 0;
|
|
32
|
+
bucket.exit.length = 0;
|
|
33
|
+
}
|
|
34
|
+
return halted;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Put back what {@link haltVisitors} emptied, so the next walk fires them all.
|
|
39
|
+
* @template TPath
|
|
40
|
+
* @param {VisitorFn<TPath>[][]} halted what `haltVisitors` returned
|
|
41
|
+
*/
|
|
42
|
+
const resumeVisitors = (halted) => {
|
|
43
|
+
for (let i = 0; i < halted.length; i += 2) {
|
|
44
|
+
const list = halted[i];
|
|
45
|
+
const visitors = halted[i + 1];
|
|
46
|
+
for (let k = 0; k < visitors.length; k++) list.push(visitors[k]);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
module.exports.haltVisitors = haltVisitors;
|
|
51
|
+
module.exports.resumeVisitors = resumeVisitors;
|
package/lib/util/handlerKeys.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
/** @import RuntimeModule from "../RuntimeModule" */
|
|
7
|
+
/** @import RuntimeModule from "../runtime/RuntimeModule" */
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* The one key a chunk's runtime modules install on a handler map, or `null` when
|
|
@@ -20,7 +20,7 @@ const getOnlyHandlerKey = (runtimeModule, handlers) => {
|
|
|
20
20
|
/** @type {string | null} */
|
|
21
21
|
let only = null;
|
|
22
22
|
for (const module of chunkGraph.getChunkRuntimeModulesIterable(chunk)) {
|
|
23
|
-
// TODO
|
|
23
|
+
// TODO in the next major release: call it directly, every runtime module answers by then. A
|
|
24
24
|
// module built against an older webpack extends a base class without it.
|
|
25
25
|
const installed =
|
|
26
26
|
typeof module.getInstalledChunkHandlers === "function"
|
package/lib/util/identifier.js
CHANGED
|
@@ -22,6 +22,8 @@ const FILE_URL_REGEXP = /^file:\//i;
|
|
|
22
22
|
// What `import()` resolves as a place rather than as a package name: relative,
|
|
23
23
|
// rooted, or carrying a scheme.
|
|
24
24
|
const RESOLVABLE_SPECIFIER_REGEXP = /^(?:\.{0,2}\/|[a-zA-Z][\w+.-]*:)/;
|
|
25
|
+
// The `./` and `../` segments a relative path opens with, either separator.
|
|
26
|
+
const RELATIVE_PATH_PREFIX_REGEXP = /^(?:\.\.?[\\/])+/;
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* Converts a file URL to the path it names. Any other value is returned
|
|
@@ -570,6 +572,103 @@ const contextifySourceUrl = (context, source, associatedObjectForCache) => {
|
|
|
570
572
|
)}`;
|
|
571
573
|
};
|
|
572
574
|
|
|
575
|
+
const URL_SCHEME_REGEXP = /^[\w+.-]+:\/\//;
|
|
576
|
+
const URL_PARTS_REGEXP =
|
|
577
|
+
/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
|
|
578
|
+
const FILE_URL_PARTS_REGEXP =
|
|
579
|
+
/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
|
|
580
|
+
const RELATIVE_URL_REGEXP = /^[.?#]/;
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Drops the `.` and empty segments of a slash-led path and folds each `..`
|
|
584
|
+
* into the segment before it, keeping the `..` left over only when relative.
|
|
585
|
+
* @param {string} urlPath a path starting with `/`
|
|
586
|
+
* @param {boolean} relative whether the path is relative, not a URL's
|
|
587
|
+
* @returns {string} the path, normalized
|
|
588
|
+
*/
|
|
589
|
+
const normalizeUrlPath = (urlPath, relative) => {
|
|
590
|
+
const pieces = urlPath.split("/");
|
|
591
|
+
let pointer = 1;
|
|
592
|
+
let directories = 0;
|
|
593
|
+
let addTrailingSlash = false;
|
|
594
|
+
for (let i = 1; i < pieces.length; i++) {
|
|
595
|
+
const piece = pieces[i];
|
|
596
|
+
if (!piece) {
|
|
597
|
+
addTrailingSlash = true;
|
|
598
|
+
continue;
|
|
599
|
+
}
|
|
600
|
+
addTrailingSlash = false;
|
|
601
|
+
if (piece === ".") continue;
|
|
602
|
+
if (piece === "..") {
|
|
603
|
+
if (directories) {
|
|
604
|
+
addTrailingSlash = true;
|
|
605
|
+
directories--;
|
|
606
|
+
pointer--;
|
|
607
|
+
} else if (relative) {
|
|
608
|
+
pieces[pointer++] = piece;
|
|
609
|
+
}
|
|
610
|
+
continue;
|
|
611
|
+
}
|
|
612
|
+
pieces[pointer++] = piece;
|
|
613
|
+
directories++;
|
|
614
|
+
}
|
|
615
|
+
let result = "";
|
|
616
|
+
for (let i = 1; i < pointer; i++) result += `/${pieces[i]}`;
|
|
617
|
+
if (!result || (addTrailingSlash && !result.endsWith("/.."))) result += "/";
|
|
618
|
+
return result;
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* A source map's source URL in the normal form source map readers resolve it
|
|
623
|
+
* to (`resolve-uri` with no base), so `./a/../b.js` reads `./b.js`.
|
|
624
|
+
* @param {string} url a source map's `sourceRoot` and source, joined
|
|
625
|
+
* @returns {string} the URL, normalized
|
|
626
|
+
*/
|
|
627
|
+
const normalizeSourceMapUrl = (url) => {
|
|
628
|
+
if (!url) return "";
|
|
629
|
+
if (url.startsWith("file:")) {
|
|
630
|
+
const match = /** @type {RegExpExecArray} */ (
|
|
631
|
+
FILE_URL_PARTS_REGEXP.exec(url)
|
|
632
|
+
);
|
|
633
|
+
const filePath = match[2];
|
|
634
|
+
return `file://${match[1] || ""}${normalizeUrlPath(
|
|
635
|
+
filePath.startsWith("/") ? filePath : `/${filePath}`,
|
|
636
|
+
false
|
|
637
|
+
)}${match[3] || ""}${match[4] || ""}`;
|
|
638
|
+
}
|
|
639
|
+
const schemeRelative = url.startsWith("//");
|
|
640
|
+
const absolutePath = !schemeRelative && url.startsWith("/");
|
|
641
|
+
const absolute =
|
|
642
|
+
!schemeRelative && !absolutePath && URL_SCHEME_REGEXP.test(url);
|
|
643
|
+
const match = /** @type {RegExpExecArray} */ (
|
|
644
|
+
URL_PARTS_REGEXP.exec(
|
|
645
|
+
schemeRelative
|
|
646
|
+
? `http:${url}`
|
|
647
|
+
: absolutePath
|
|
648
|
+
? `http://foo.com${url}`
|
|
649
|
+
: absolute
|
|
650
|
+
? url
|
|
651
|
+
: `http://foo.com/${url}`
|
|
652
|
+
)
|
|
653
|
+
);
|
|
654
|
+
const queryHash = (match[6] || "") + (match[7] || "");
|
|
655
|
+
if (url.startsWith("?") || url.startsWith("#")) return queryHash;
|
|
656
|
+
const relative = !schemeRelative && !absolutePath && !absolute;
|
|
657
|
+
const urlPath = normalizeUrlPath(match[5] || "/", relative);
|
|
658
|
+
if (absolutePath) return urlPath + queryHash;
|
|
659
|
+
if (relative) {
|
|
660
|
+
const relativePath = urlPath.slice(1);
|
|
661
|
+
if (!relativePath) return queryHash || ".";
|
|
662
|
+
return RELATIVE_URL_REGEXP.test(url) &&
|
|
663
|
+
!RELATIVE_URL_REGEXP.test(relativePath)
|
|
664
|
+
? `./${relativePath}${queryHash}`
|
|
665
|
+
: relativePath + queryHash;
|
|
666
|
+
}
|
|
667
|
+
return `${schemeRelative ? "" : match[1]}//${match[2] || ""}${match[3]}${
|
|
668
|
+
match[4] || ""
|
|
669
|
+
}${urlPath}${queryHash}`;
|
|
670
|
+
};
|
|
671
|
+
|
|
573
672
|
const LINE_SEPARATOR_REGEXP = /[\u2028\u2029]/g;
|
|
574
673
|
|
|
575
674
|
/**
|
|
@@ -584,8 +683,23 @@ const toJsStringLiteral = (str) =>
|
|
|
584
683
|
c === "\u2029" ? "\\u2029" : "\\u2028"
|
|
585
684
|
);
|
|
586
685
|
|
|
686
|
+
const parseResource = makeCacheable(_parseResource);
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
* The basename a request lends to what it is emitted as, so `./my-script.js`
|
|
690
|
+
* names `my-script`. A `data:` request carries no path and so no name.
|
|
691
|
+
* @param {string} request a request
|
|
692
|
+
* @returns {string | undefined} the basename without extension, when it has one
|
|
693
|
+
*/
|
|
694
|
+
const getRequestBaseName = (request) => {
|
|
695
|
+
if (request.startsWith("data:")) return undefined;
|
|
696
|
+
const { path: file } = parseResource(request);
|
|
697
|
+
return path.basename(file, path.extname(file)) || undefined;
|
|
698
|
+
};
|
|
699
|
+
|
|
587
700
|
module.exports.ABSOLUTE_PATH_REGEXP = ABSOLUTE_PATH_REGEXP;
|
|
588
701
|
module.exports.NODE_MODULES_REGEXP = NODE_MODULES_REGEXP;
|
|
702
|
+
module.exports.RELATIVE_PATH_PREFIX_REGEXP = RELATIVE_PATH_PREFIX_REGEXP;
|
|
589
703
|
module.exports.RESOLVABLE_SPECIFIER_REGEXP = RESOLVABLE_SPECIFIER_REGEXP;
|
|
590
704
|
module.exports.WINDOWS_ABS_PATH_REGEXP = WINDOWS_ABS_PATH_REGEXP;
|
|
591
705
|
module.exports.WINDOWS_PATH_SEPARATOR_REGEXP = WINDOWS_PATH_SEPARATOR_REGEXP;
|
|
@@ -594,11 +708,13 @@ module.exports.contextify = contextify;
|
|
|
594
708
|
module.exports.contextifySourceUrl = contextifySourceUrl;
|
|
595
709
|
module.exports.escapeHashInPathRequest = escapeHashInPathRequest;
|
|
596
710
|
module.exports.fileUrlToPath = fileUrlToPath;
|
|
711
|
+
module.exports.getRequestBaseName = getRequestBaseName;
|
|
597
712
|
module.exports.getUndoPath = getUndoPath;
|
|
598
713
|
module.exports.makeCacheable = makeCacheable;
|
|
599
714
|
module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
|
|
600
715
|
module.exports.makePathsRelative = makePathsRelative;
|
|
601
|
-
module.exports.
|
|
716
|
+
module.exports.normalizeSourceMapUrl = normalizeSourceMapUrl;
|
|
717
|
+
module.exports.parseResource = parseResource;
|
|
602
718
|
module.exports.parseResourceWithoutFragment = makeCacheable(
|
|
603
719
|
_parseResourceWithoutFragment
|
|
604
720
|
);
|
|
@@ -5,20 +5,22 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO
|
|
10
|
+
} = require("../module/ModuleTypeConstants");
|
|
9
11
|
const { parseResource } = require("./identifier");
|
|
10
12
|
|
|
11
|
-
/** @import NormalModuleFactory from "../NormalModuleFactory" */
|
|
13
|
+
/** @import NormalModuleFactory from "../module/NormalModuleFactory" */
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* When a built-in module type is only enabled implicitly (`experiments.css` /
|
|
15
|
-
* `experiments.html` resolved from their `"auto"` default), modules that reach
|
|
17
|
+
* `experiments.html` / `experiments.asyncWebAssembly` resolved from their `"auto"` default), modules that reach
|
|
16
18
|
* the factory with loaders applied — an inline request or loaders injected via
|
|
17
19
|
* hooks (e.g. html-webpack-plugin's template loader) — keep the pre-existing
|
|
18
20
|
* behavior: the loader result is parsed as JavaScript, not as the built-in type.
|
|
19
21
|
* A `!=!` matchResource is an explicit re-type of the loader result and wins.
|
|
20
22
|
*
|
|
21
|
-
* TODO
|
|
23
|
+
* TODO in the next major release: css/html/asyncWebAssembly are enabled unconditionally (`experiments.*: true`),
|
|
22
24
|
* so this implicit-only workaround can be removed together with the `"auto"`
|
|
23
25
|
* marker in `applyExperimentsDefaults`.
|
|
24
26
|
* @param {NormalModuleFactory} normalModuleFactory the normal module factory
|