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
package/lib/util/dataURL.js
CHANGED
|
@@ -39,14 +39,14 @@ const decodeDataURI = (uri) => {
|
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* A `data:` URI split into the parts a caller has to put back together.
|
|
42
|
-
* `
|
|
43
|
-
*
|
|
42
|
+
* `parameters` is every `;…` after the media type (`;base64` included) and
|
|
43
|
+
* `payload` the text after the comma, both in the form they were written.
|
|
44
|
+
* @typedef {{ mediaType: string, parameters: string, base64: boolean, payload: string }} ParsedDataURI
|
|
44
45
|
*/
|
|
45
46
|
|
|
46
47
|
// `URIRegEx`'s `.` stops at a newline, which a raw `<svg>` payload carries, and
|
|
47
|
-
// its `base64` group
|
|
48
|
-
//
|
|
49
|
-
// module requests are recognized by.
|
|
48
|
+
// its optional `base64` group reads `;charset=utf8` as one. This is the strict
|
|
49
|
+
// split a rewriter needs; that one stays as the matcher for module requests.
|
|
50
50
|
const STRICT_URI_REGEXP = /^data:([^,;]*)((?:;[^,;]*)*),([\s\S]*)$/i;
|
|
51
51
|
|
|
52
52
|
const JSON_TYPE = "json";
|
|
@@ -120,22 +120,56 @@ const parseDataURI = (uri) => {
|
|
|
120
120
|
if (match === null) return null;
|
|
121
121
|
return {
|
|
122
122
|
mediaType: match[1],
|
|
123
|
+
parameters: match[2],
|
|
123
124
|
base64: /;base64$/i.test(match[2]),
|
|
124
125
|
payload: match[3]
|
|
125
126
|
};
|
|
126
127
|
};
|
|
127
128
|
|
|
129
|
+
// A charset other than UTF-8 names bytes this cannot read back as text.
|
|
130
|
+
const FOREIGN_CHARSET_REGEXP = /;charset=(?!(?:utf-?8|us-ascii)(?:;|$))/i;
|
|
131
|
+
|
|
128
132
|
/**
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
+
* Decode a payload's percent-escapes the way the URL parser does: a `%` and two
|
|
134
|
+
* hex digits is the byte they name, and any other `%` is itself.
|
|
135
|
+
* @param {string} payload the payload as written
|
|
136
|
+
* @returns {Buffer} the bytes it names
|
|
137
|
+
*/
|
|
138
|
+
const percentDecode = (payload) => {
|
|
139
|
+
const input = Buffer.from(payload, "utf8");
|
|
140
|
+
const output = Buffer.allocUnsafe(input.length);
|
|
141
|
+
let length = 0;
|
|
142
|
+
for (let i = 0; i < input.length; i++) {
|
|
143
|
+
const byte = input[i];
|
|
144
|
+
if (byte === 0x25 && i + 2 < input.length) {
|
|
145
|
+
const digits = String.fromCharCode(input[i + 1], input[i + 2]);
|
|
146
|
+
if (/^[0-9a-f]{2}$/i.test(digits)) {
|
|
147
|
+
output[length++] = Number.parseInt(digits, 16);
|
|
148
|
+
i += 2;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
output[length++] = byte;
|
|
153
|
+
}
|
|
154
|
+
return output.subarray(0, length);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* The payload as text, or `null` when reading it would not round-trip. A raw
|
|
159
|
+
* `#` is read as content, as webpack's own `data:` modules read it, so a
|
|
160
|
+
* rebuilt URI escapes it rather than cutting the payload short.
|
|
133
161
|
* @param {ParsedDataURI} parsed the split URI
|
|
134
162
|
* @returns {string | null} the payload as text
|
|
135
163
|
*/
|
|
136
164
|
const decodeDataURIPayload = (parsed) => {
|
|
137
165
|
if (!parsed.base64) {
|
|
138
|
-
|
|
166
|
+
const { payload } = parsed;
|
|
167
|
+
if (!payload.includes("%")) return payload;
|
|
168
|
+
if (FOREIGN_CHARSET_REGEXP.test(parsed.parameters)) return null;
|
|
169
|
+
const bytes = percentDecode(payload);
|
|
170
|
+
const text = bytes.toString("utf8");
|
|
171
|
+
// Bytes that are no UTF-8 text are not written back as the same bytes.
|
|
172
|
+
return Buffer.from(text, "utf8").equals(bytes) ? text : null;
|
|
139
173
|
}
|
|
140
174
|
// Decoding is lenient rather than throwing, so garbage decodes to something
|
|
141
175
|
// that does not round-trip, which is the same answer: leave it alone.
|
|
@@ -145,6 +179,51 @@ const decodeDataURIPayload = (parsed) => {
|
|
|
145
179
|
: null;
|
|
146
180
|
};
|
|
147
181
|
|
|
182
|
+
/**
|
|
183
|
+
* A `data:` URI's payload as text, for a caller that will render it, with the
|
|
184
|
+
* language its media type names. `null` when there is nothing to offer: not a
|
|
185
|
+
* `data:` URI, a media type naming no language, a payload that would not
|
|
186
|
+
* round-trip, or a raw `#`, where a browser reads the rest as a fragment.
|
|
187
|
+
* @param {string} uri the URI, unquoted and unescaped
|
|
188
|
+
* @returns {{ parsed: ParsedDataURI, type: string, payload: string } | null} what it holds, or null
|
|
189
|
+
*/
|
|
190
|
+
const readEmbeddedDataURI = (uri) => {
|
|
191
|
+
if (uri.includes("#")) return null;
|
|
192
|
+
const parsed = parseDataURI(uri);
|
|
193
|
+
if (parsed === null) return null;
|
|
194
|
+
const type = languageOfMediaType(parsed.mediaType);
|
|
195
|
+
if (type === undefined) return null;
|
|
196
|
+
const payload = decodeDataURIPayload(parsed);
|
|
197
|
+
if (payload === null || payload === "") return null;
|
|
198
|
+
return { parsed, type, payload };
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Escape a payload for a `data:` URI written without `base64`, touching only
|
|
203
|
+
* what would change what the URI means. The host's own quoting is the caller's.
|
|
204
|
+
* @param {string} text the payload as text
|
|
205
|
+
* @returns {string} the escaped payload
|
|
206
|
+
*/
|
|
207
|
+
const encodeDataURIPayload = (text) => {
|
|
208
|
+
// WHY: `%` starts an escape and `#` a fragment. The URL parser drops every
|
|
209
|
+
// tab and newline and strips C0 controls and spaces off the end, so those
|
|
210
|
+
// are escaped too, or the payload read back is not the one written.
|
|
211
|
+
let trailing = text.length;
|
|
212
|
+
while (trailing > 0 && text.charCodeAt(trailing - 1) === 0x20) trailing--;
|
|
213
|
+
let out = "";
|
|
214
|
+
let start = 0;
|
|
215
|
+
for (let i = 0; i < text.length; i++) {
|
|
216
|
+
const c = text.charCodeAt(i);
|
|
217
|
+
if (c > 0x20 && c !== 0x7f && c !== 0x25 && c !== 0x23) continue;
|
|
218
|
+
if (c === 0x20 && i < trailing) continue;
|
|
219
|
+
out += `${text.slice(start, i)}%${c < 0x10 ? "0" : ""}${c
|
|
220
|
+
.toString(16)
|
|
221
|
+
.toUpperCase()}`;
|
|
222
|
+
start = i + 1;
|
|
223
|
+
}
|
|
224
|
+
return start === 0 ? text : out + text.slice(start);
|
|
225
|
+
};
|
|
226
|
+
|
|
148
227
|
/**
|
|
149
228
|
* Rebuild a `data:` URI around a new payload, in the form it was written in.
|
|
150
229
|
* @param {ParsedDataURI} parsed the split URI
|
|
@@ -152,14 +231,12 @@ const decodeDataURIPayload = (parsed) => {
|
|
|
152
231
|
* @returns {string} the rebuilt URI
|
|
153
232
|
*/
|
|
154
233
|
const buildDataURI = (parsed, text) => {
|
|
155
|
-
|
|
234
|
+
// A `;charset=` names how the payload decodes, so it is kept as written.
|
|
235
|
+
const head = `data:${parsed.mediaType}${parsed.parameters},`;
|
|
156
236
|
if (parsed.base64) {
|
|
157
237
|
return head + Buffer.from(text, "utf8").toString("base64");
|
|
158
238
|
}
|
|
159
|
-
|
|
160
|
-
// `#` starts a fragment. Everything else stays as the renderer wrote it, and
|
|
161
|
-
// the url token's own quoting is the caller's to apply.
|
|
162
|
-
return head + text.replace(/%/g, "%25").replace(/#/g, "%23");
|
|
239
|
+
return head + encodeDataURIPayload(text);
|
|
163
240
|
};
|
|
164
241
|
|
|
165
242
|
/**
|
|
@@ -209,8 +286,7 @@ const collectEmbeddedDiagnostics = (reported) => {
|
|
|
209
286
|
|
|
210
287
|
/**
|
|
211
288
|
* What a renderer made of one embedded body: the minified text, and anything it
|
|
212
|
-
* has to report about it. A bare string is the text alone
|
|
213
|
-
* renderer that declined.
|
|
289
|
+
* has to report about it. A bare string is the text alone.
|
|
214
290
|
* @typedef {{ code?: string, warnings?: (Error | string)[], errors?: (Error | string)[] }} EmbeddedSourceResult
|
|
215
291
|
*/
|
|
216
292
|
|
|
@@ -258,7 +334,9 @@ module.exports = {
|
|
|
258
334
|
decodeDataURI,
|
|
259
335
|
decodeDataURIPayload,
|
|
260
336
|
embeddedText,
|
|
337
|
+
encodeDataURIPayload,
|
|
261
338
|
languageOfFilename,
|
|
262
339
|
languageOfMediaType,
|
|
263
|
-
parseDataURI
|
|
340
|
+
parseDataURI,
|
|
341
|
+
readEmbeddedDataURI
|
|
264
342
|
};
|
package/lib/util/deprecation.js
CHANGED
|
@@ -203,7 +203,7 @@ module.exports.arrayToSetDeprecation = (set, name) => {
|
|
|
203
203
|
* Returns } SetDeprecatedArray.
|
|
204
204
|
* @template T
|
|
205
205
|
* @param {string} name name
|
|
206
|
-
* @returns {{ new <T
|
|
206
|
+
* @returns {{ new <T>(values?: ReadonlyArray<T> | null): SetDeprecatedArray<T> }} SetDeprecatedArray
|
|
207
207
|
*/
|
|
208
208
|
module.exports.createArrayToSetDeprecationSet = (name) => {
|
|
209
209
|
let initialized = false;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q @sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A condition in the minimizer plugin's `extractComments`. A function's arguments
|
|
10
|
+
* are each minimizer's own, so these minifiers hand it what `MinimizeExtractCommentsCondition` names.
|
|
11
|
+
* @typedef {boolean | string | RegExp | ((...args: never[]) => boolean)} PluginExtractCommentsCondition
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The minimizer plugin's `extractComments`, as far as these minifiers read it: a
|
|
15
|
+
* condition, or an object holding one.
|
|
16
|
+
* @typedef {PluginExtractCommentsCondition | { condition?: PluginExtractCommentsCondition }} PluginExtractComments
|
|
17
|
+
*/
|
|
18
|
+
/** @typedef {import("../../declarations/WebpackOptions").OptimizationMinimizeExtractComments} MinimizeExtractComments */
|
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").OptimizationMinimizeExtractCommentsCondition} MinimizeExtractCommentsCondition */
|
|
20
|
+
/** @typedef {boolean | string | RegExp | ((comment: string) => boolean)} CommentsOption */
|
|
21
|
+
/** @typedef {(comment: string, line: number, column: number) => boolean} CommentPredicate */
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* How one language writes a comment, and which it keeps where nothing is extracted.
|
|
25
|
+
* @typedef {object} CommentSyntax
|
|
26
|
+
* @property {string} open what opens a comment, e.g. `/*`
|
|
27
|
+
* @property {string} close what closes it
|
|
28
|
+
* @property {(comment: string) => boolean} some what the `comments: "some"` level keeps
|
|
29
|
+
* @property {(comment: string) => boolean} unstated what is kept when `comments` is unset
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A `comments` value as the predicate over a comment's text it stands for.
|
|
34
|
+
* @param {CommentsOption} comments as configured
|
|
35
|
+
* @param {(comment: string) => boolean} some what `"some"` keeps
|
|
36
|
+
* @returns {(comment: string) => boolean} whether a comment is kept
|
|
37
|
+
*/
|
|
38
|
+
const keepCondition = (comments, some) => {
|
|
39
|
+
if (typeof comments === "function") return comments;
|
|
40
|
+
if (comments === true || comments === "all") return () => true;
|
|
41
|
+
if (comments === false) return () => false;
|
|
42
|
+
if (comments === "some") return some;
|
|
43
|
+
const pattern = comments instanceof RegExp ? comments : new RegExp(comments);
|
|
44
|
+
return (comment) => pattern.test(comment);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Which comments `extractComments` takes out, read as terser-webpack-plugin
|
|
49
|
+
* reads it: `true`, `"some"` or an object without a condition is terser's `some`
|
|
50
|
+
* bar IE's `@cc_on`, which marks conditional compilation rather than a license.
|
|
51
|
+
* @param {PluginExtractComments | MinimizeExtractComments | undefined} option as configured
|
|
52
|
+
* @returns {CommentPredicate | undefined} the condition, or undefined when nothing is extracted
|
|
53
|
+
*/
|
|
54
|
+
const extractCondition = (option) => {
|
|
55
|
+
if (option === undefined || option === false) return undefined;
|
|
56
|
+
/** @type {PluginExtractComments | MinimizeExtractComments} */
|
|
57
|
+
let condition = option;
|
|
58
|
+
if (typeof option === "object" && !(option instanceof RegExp)) {
|
|
59
|
+
// Extracting with a condition nothing meets still drops what is not kept.
|
|
60
|
+
condition = option.condition === undefined ? true : option.condition;
|
|
61
|
+
if (condition === false) return () => false;
|
|
62
|
+
}
|
|
63
|
+
if (condition === true || condition === "some") {
|
|
64
|
+
return (comment) => /@preserve|@lic|^\**!/i.test(comment);
|
|
65
|
+
}
|
|
66
|
+
if (typeof condition === "function") {
|
|
67
|
+
// No node to hand it, nor a second kind of comment: the predicate is asked
|
|
68
|
+
// about the comment alone, its text and place.
|
|
69
|
+
const predicate = /** @type {MinimizeExtractCommentsCondition} */ (
|
|
70
|
+
condition
|
|
71
|
+
);
|
|
72
|
+
return (comment, line, col) =>
|
|
73
|
+
predicate({ value: comment, line, col }) === true;
|
|
74
|
+
}
|
|
75
|
+
// an object option was unwrapped to its condition above
|
|
76
|
+
const keep = keepCondition(
|
|
77
|
+
/** @type {string | RegExp} */ (condition),
|
|
78
|
+
() => false
|
|
79
|
+
);
|
|
80
|
+
return (comment) => keep(comment);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The `comments` predicate a print takes to extract comments, and the list
|
|
85
|
+
* they are collected into, deduplicated and written with their delimiters.
|
|
86
|
+
* @param {PluginExtractComments | MinimizeExtractComments | undefined} option `extractComments` as configured
|
|
87
|
+
* @param {CommentsOption | undefined} comments the language's `comments` option
|
|
88
|
+
* @param {CommentSyntax} syntax how the language writes and keeps comments
|
|
89
|
+
* @returns {{ comments: CommentPredicate, extracted: string[] } | undefined} undefined when nothing is extracted
|
|
90
|
+
*/
|
|
91
|
+
const extractComments = (option, comments, syntax) => {
|
|
92
|
+
const extract = extractCondition(option);
|
|
93
|
+
if (extract === undefined) return undefined;
|
|
94
|
+
// As terser does: where the comments kept are not stated, extracting leaves
|
|
95
|
+
// only what the language must keep.
|
|
96
|
+
const keep =
|
|
97
|
+
comments === undefined
|
|
98
|
+
? syntax.unstated
|
|
99
|
+
: keepCondition(comments, syntax.some);
|
|
100
|
+
/** @type {string[]} */
|
|
101
|
+
const extracted = [];
|
|
102
|
+
const seen = new Set();
|
|
103
|
+
return {
|
|
104
|
+
comments: (comment, line, column) => {
|
|
105
|
+
if (!extract(comment, line, column)) return keep(comment);
|
|
106
|
+
const text = `${syntax.open}${comment}${syntax.close}`;
|
|
107
|
+
if (!seen.has(text)) {
|
|
108
|
+
seen.add(text);
|
|
109
|
+
extracted.push(text);
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
},
|
|
113
|
+
extracted
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
module.exports.extractComments = extractComments;
|
|
118
|
+
module.exports.keepCondition = keepCondition;
|
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
|
|
@@ -22,6 +22,9 @@ const getGlobToRegExpSource = memoize(
|
|
|
22
22
|
);
|
|
23
23
|
|
|
24
24
|
/** @typedef {{ caseSensitive?: boolean, requireLiteralLeadingDot?: boolean }} GlobMatchOptions */
|
|
25
|
+
/** @typedef {(str: string) => boolean} GlobMatcher */
|
|
26
|
+
/** @typedef {import("../../declarations/WebpackOptions").GlobCondition} GlobCondition */
|
|
27
|
+
/** @import Module from "../module/Module" */
|
|
25
28
|
|
|
26
29
|
/**
|
|
27
30
|
* @param {string} s string
|
|
@@ -518,10 +521,12 @@ const segmentGlobToRegExpSource = (segment) => {
|
|
|
518
521
|
* `path.matchesGlob` semantics: `*`, `?` and classes stay within a segment,
|
|
519
522
|
* a whole-segment `**` spans segments, and neither crosses a dot segment.
|
|
520
523
|
* @param {string} glob brace-free glob
|
|
524
|
+
* @param {boolean} lazy whether `**` spans as few segments as it can
|
|
521
525
|
* @returns {string} regexp source without anchors
|
|
522
526
|
*/
|
|
523
|
-
const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
527
|
+
const braceFreeGlobToPathRegExpSource = (glob, lazy) => {
|
|
524
528
|
const segments = optimizeGlobSegments(glob.split("/"));
|
|
529
|
+
const repeat = lazy ? "*?" : "*";
|
|
525
530
|
let source = "";
|
|
526
531
|
let needSeparator = false;
|
|
527
532
|
for (let i = 0; i < segments.length; i++) {
|
|
@@ -536,8 +541,8 @@ const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
|
536
541
|
source += isLast
|
|
537
542
|
? `${needSeparator ? "/" : ""}(?:${NON_DOT_SEGMENT}(?:/${NON_DOT_SEGMENT})*)?`
|
|
538
543
|
: needSeparator
|
|
539
|
-
? `(?:/${NON_DOT_SEGMENT})
|
|
540
|
-
: `/?(?:${NON_DOT_SEGMENT}/)
|
|
544
|
+
? `(?:/${NON_DOT_SEGMENT})${repeat}`
|
|
545
|
+
: `/?(?:${NON_DOT_SEGMENT}/)${repeat}`;
|
|
541
546
|
needSeparator = !isLast && needSeparator;
|
|
542
547
|
continue;
|
|
543
548
|
}
|
|
@@ -553,17 +558,10 @@ const braceFreeGlobToPathRegExpSource = (glob) => {
|
|
|
553
558
|
};
|
|
554
559
|
|
|
555
560
|
/**
|
|
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/globUtils.unittest.js`.
|
|
562
561
|
* @param {string} pattern glob pattern
|
|
563
|
-
* @
|
|
564
|
-
* @returns {((str: string) => boolean) | null} matcher, null for un-compilable patterns
|
|
562
|
+
* @returns {string} regexp source matching a normalized path, unanchored
|
|
565
563
|
*/
|
|
566
|
-
const
|
|
564
|
+
const pathGlobToRegExpSource = (pattern) => {
|
|
567
565
|
let normalizedPattern = normalizePathSeparatorsForPath(pattern);
|
|
568
566
|
while (normalizedPattern.startsWith("./")) {
|
|
569
567
|
normalizedPattern = normalizedPattern.slice(2);
|
|
@@ -574,10 +572,40 @@ const createPathGlobMatcher = (pattern, options = {}) => {
|
|
|
574
572
|
) {
|
|
575
573
|
normalizedPattern = `**/${normalizedPattern}`;
|
|
576
574
|
}
|
|
577
|
-
const sources = expandGlobBraces(normalizedPattern).map(
|
|
578
|
-
braceFreeGlobToPathRegExpSource
|
|
575
|
+
const sources = expandGlobBraces(normalizedPattern).map((glob) =>
|
|
576
|
+
braceFreeGlobToPathRegExpSource(glob, false)
|
|
579
577
|
);
|
|
580
|
-
|
|
578
|
+
return sources.length === 1 ? sources[0] : `(?:${sources.join("|")})`;
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
// a separator in a path regexp source, which a native path may spell `\`
|
|
582
|
+
const PATH_SOURCE_SEPARATOR_REGEXP = /\\[\s\S]|\[\^\/|\//g;
|
|
583
|
+
/** @type {Record<string, string>} */
|
|
584
|
+
const PATH_SOURCE_SEPARATORS = { "/": "[\\\\/]", "[^/": "[^\\\\/" };
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* @param {string} source regexp source over `/`-separated paths
|
|
588
|
+
* @returns {string} the same source, also accepting `\` as a separator
|
|
589
|
+
*/
|
|
590
|
+
const toNativePathSource = (source) =>
|
|
591
|
+
source.replace(
|
|
592
|
+
PATH_SOURCE_SEPARATOR_REGEXP,
|
|
593
|
+
(match) => PATH_SOURCE_SEPARATORS[match] || match
|
|
594
|
+
);
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Compiles a glob into a matcher over OS-independent paths: `\` is a path
|
|
598
|
+
* separator in both the pattern and the tested path (never an escape, so a
|
|
599
|
+
* pattern built with `path.resolve` works everywhere; use `[*]` to match a
|
|
600
|
+
* literal `*`), and a relative pattern matches at any depth. Matching follows
|
|
601
|
+
* `path.matchesGlob`, except where its minimatch shows through — see the
|
|
602
|
+
* divergences listed above the corpus in `test/unitCases/globUtils.unittest.js`.
|
|
603
|
+
* @param {string} pattern glob pattern
|
|
604
|
+
* @param {GlobMatchOptions=} options options
|
|
605
|
+
* @returns {((str: string) => boolean) | null} matcher, null for un-compilable patterns
|
|
606
|
+
*/
|
|
607
|
+
const createPathGlobMatcher = (pattern, options = {}) => {
|
|
608
|
+
const source = pathGlobToRegExpSource(pattern);
|
|
581
609
|
/** @type {RegExp} */
|
|
582
610
|
let regexp;
|
|
583
611
|
try {
|
|
@@ -598,6 +626,153 @@ const createPathGlobMatcher = (pattern, options = {}) => {
|
|
|
598
626
|
};
|
|
599
627
|
};
|
|
600
628
|
|
|
629
|
+
/**
|
|
630
|
+
* @param {GlobMatcher[]} positive patterns that select
|
|
631
|
+
* @param {GlobMatcher[]} negative patterns that subtract
|
|
632
|
+
* @returns {GlobMatcher} matcher
|
|
633
|
+
*/
|
|
634
|
+
const combineGlobMatchers = (positive, negative) => {
|
|
635
|
+
/** @type {GlobMatcher} */
|
|
636
|
+
const matchPositive =
|
|
637
|
+
positive.length === 0
|
|
638
|
+
? () => true
|
|
639
|
+
: positive.length === 1
|
|
640
|
+
? positive[0]
|
|
641
|
+
: (str) => positive.some((match) => match(str));
|
|
642
|
+
if (negative.length === 0) return matchPositive;
|
|
643
|
+
/** @type {GlobMatcher} */
|
|
644
|
+
const matchNegative =
|
|
645
|
+
negative.length === 1
|
|
646
|
+
? negative[0]
|
|
647
|
+
: (str) => negative.some((match) => match(str));
|
|
648
|
+
return (str) => matchPositive(str) && !matchNegative(str);
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* Compiles glob patterns into one matcher: patterns are OR-ed and a `!` prefix
|
|
653
|
+
* subtracts, as in `module.rules[].glob`.
|
|
654
|
+
* @param {string[]} globs glob patterns
|
|
655
|
+
* @param {(pattern: string, index: number) => never} onInvalid throws for an un-compilable pattern
|
|
656
|
+
* @returns {GlobMatcher} matcher
|
|
657
|
+
*/
|
|
658
|
+
const compileGlobList = (globs, onInvalid) => {
|
|
659
|
+
/** @type {GlobMatcher[]} */
|
|
660
|
+
const positive = [];
|
|
661
|
+
/** @type {GlobMatcher[]} */
|
|
662
|
+
const negative = [];
|
|
663
|
+
for (let i = 0; i < globs.length; i++) {
|
|
664
|
+
const pattern = globs[i];
|
|
665
|
+
const negated = pattern.startsWith("!");
|
|
666
|
+
const match = createPathGlobMatcher(negated ? pattern.slice(1) : pattern);
|
|
667
|
+
if (match === null) onInvalid(pattern, i);
|
|
668
|
+
(negated ? negative : positive).push(/** @type {GlobMatcher} */ (match));
|
|
669
|
+
}
|
|
670
|
+
return combineGlobMatchers(positive, negative);
|
|
671
|
+
};
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* @param {string} pattern glob pattern
|
|
675
|
+
* @returns {never} never returns
|
|
676
|
+
*/
|
|
677
|
+
const throwInvalidGlob = (pattern) => {
|
|
678
|
+
throw new Error(`Invalid glob pattern: ${pattern}`);
|
|
679
|
+
};
|
|
680
|
+
|
|
681
|
+
/** @type {WeakMap<GlobCondition, GlobMatcher>} */
|
|
682
|
+
const globConditionMatchers = new WeakMap();
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Tests a path against `{ glob }`, compiled once per condition object.
|
|
686
|
+
* @param {GlobCondition} condition glob condition
|
|
687
|
+
* @param {string} str path
|
|
688
|
+
* @returns {boolean} true, when the path matches
|
|
689
|
+
*/
|
|
690
|
+
const matchGlobCondition = (condition, str) => {
|
|
691
|
+
let match = globConditionMatchers.get(condition);
|
|
692
|
+
if (match === undefined) {
|
|
693
|
+
match = compileGlobList(
|
|
694
|
+
Array.isArray(condition.glob) ? condition.glob : [condition.glob],
|
|
695
|
+
throwInvalidGlob
|
|
696
|
+
);
|
|
697
|
+
globConditionMatchers.set(condition, match);
|
|
698
|
+
}
|
|
699
|
+
return match(str);
|
|
700
|
+
};
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Tests a module's `nameForCondition()` against `{ glob }`; a module without one never matches.
|
|
704
|
+
* @param {GlobCondition} condition glob condition
|
|
705
|
+
* @param {Module} module module
|
|
706
|
+
* @returns {boolean} true, when the module matches
|
|
707
|
+
*/
|
|
708
|
+
const matchModuleGlobCondition = (condition, module) => {
|
|
709
|
+
const name = module.nameForCondition();
|
|
710
|
+
return name ? matchGlobCondition(condition, name) : false;
|
|
711
|
+
};
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Compiles each relative path of a path option as a glob, leaving absolute paths and RegExps as they are.
|
|
715
|
+
* @template T, R
|
|
716
|
+
* @param {(T | string)[]} paths option value
|
|
717
|
+
* @param {(pattern: string) => R} compile glob compiler
|
|
718
|
+
* @returns {(T | R | string)[]} paths with relative globs compiled
|
|
719
|
+
*/
|
|
720
|
+
const compileRelativeGlobPaths = (paths, compile) =>
|
|
721
|
+
paths.map((item) =>
|
|
722
|
+
typeof item === "string" && !ABSOLUTE_PATH_REGEXP.test(item)
|
|
723
|
+
? compile(item)
|
|
724
|
+
: item
|
|
725
|
+
);
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* Compiles a glob into a RegExp matching what `createPathGlobMatcher` matches,
|
|
729
|
+
* for an option handed to code that only calls `.test()` on a native path.
|
|
730
|
+
* @param {string} pattern glob pattern
|
|
731
|
+
* @returns {RegExp} regexp
|
|
732
|
+
*/
|
|
733
|
+
const createPathGlobRegExp = (pattern) =>
|
|
734
|
+
new RegExp(`^${toNativePathSource(pathGlobToRegExpSource(pattern))}$`);
|
|
735
|
+
|
|
736
|
+
/**
|
|
737
|
+
* Compiles a relative glob into a RegExp whose first group is the outermost
|
|
738
|
+
* directory it matches at the start of a path, trailing separator included — the
|
|
739
|
+
* shape `snapshot.managedPaths` and its siblings read. Like `module.rules[].glob`
|
|
740
|
+
* it matches at any depth, unless a leading `./` or `../` anchors it to `context`.
|
|
741
|
+
* @param {string} pattern relative glob pattern
|
|
742
|
+
* @param {string} context directory a `./` or `../` pattern is relative to
|
|
743
|
+
* @returns {RegExp} prefix regexp
|
|
744
|
+
*/
|
|
745
|
+
const createPathGlobPrefixRegExp = (pattern, context) => {
|
|
746
|
+
let glob = normalizePathSeparatorsForPath(pattern);
|
|
747
|
+
let baseSource = "";
|
|
748
|
+
if (glob.startsWith("./") || glob.startsWith("../")) {
|
|
749
|
+
let base = context;
|
|
750
|
+
for (;;) {
|
|
751
|
+
if (glob.startsWith("./")) {
|
|
752
|
+
glob = glob.slice(2);
|
|
753
|
+
} else if (glob.startsWith("../")) {
|
|
754
|
+
base = path.dirname(base);
|
|
755
|
+
glob = glob.slice(3);
|
|
756
|
+
} else {
|
|
757
|
+
break;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
for (const c of path.join(base, "/")) {
|
|
761
|
+
baseSource += c === "/" || c === "\\" ? "[\\\\/]" : quoteRegExpChar(c);
|
|
762
|
+
}
|
|
763
|
+
} else if (!glob.startsWith("**/")) {
|
|
764
|
+
glob = `**/${glob}`;
|
|
765
|
+
}
|
|
766
|
+
if (!glob.endsWith("/")) glob += "/";
|
|
767
|
+
const sources = expandGlobBraces(glob).map((brace) =>
|
|
768
|
+
braceFreeGlobToPathRegExpSource(brace, true)
|
|
769
|
+
);
|
|
770
|
+
const source = toNativePathSource(
|
|
771
|
+
sources.length === 1 ? sources[0] : `(?:${sources.join("|")})`
|
|
772
|
+
);
|
|
773
|
+
return new RegExp(`^(${baseSource}${source})`);
|
|
774
|
+
};
|
|
775
|
+
|
|
601
776
|
/**
|
|
602
777
|
* @param {string} path path
|
|
603
778
|
* @param {string} baseDir base directory
|
|
@@ -961,7 +1136,11 @@ const globPatternBaseReachesDir = (patterns, dirPath) => {
|
|
|
961
1136
|
|
|
962
1137
|
module.exports = {
|
|
963
1138
|
commonGlobBaseDir,
|
|
1139
|
+
compileGlobList,
|
|
1140
|
+
compileRelativeGlobPaths,
|
|
964
1141
|
createPathGlobMatcher,
|
|
1142
|
+
createPathGlobPrefixRegExp,
|
|
1143
|
+
createPathGlobRegExp,
|
|
965
1144
|
escapeGlobPattern,
|
|
966
1145
|
extractGlobBaseDir,
|
|
967
1146
|
getGlobToRegExpSource,
|
|
@@ -976,6 +1155,8 @@ module.exports = {
|
|
|
976
1155
|
isNonExhaustiveImportMetaGlobSkippedDir,
|
|
977
1156
|
joinImportMetaGlobFsPath,
|
|
978
1157
|
joinImportMetaGlobPath,
|
|
1158
|
+
matchGlobCondition,
|
|
1159
|
+
matchModuleGlobCondition,
|
|
979
1160
|
normalizePathSeparators,
|
|
980
1161
|
normalizePathSeparatorsForPath,
|
|
981
1162
|
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"
|
|
@@ -7,10 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
const Hash = require("../Hash");
|
|
9
9
|
|
|
10
|
-
// 65536 is the size
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// ~3 makes sure that it's always a block of 4 chars, so avoid partially encoded bytes for base64
|
|
10
|
+
// 65536 is a wasm memory page, 64 the largest chunk size any wasm hash
|
|
11
|
+
// implementation takes, 4 the most bytes utf-8 spends on one char, and `& ~3`
|
|
12
|
+
// keeps it a whole block of 4 chars so base64 never sees a partial encoding.
|
|
14
13
|
const MAX_SHORT_STRING = Math.floor((65536 - 64) / 4) & ~3;
|
|
15
14
|
|
|
16
15
|
/**
|