webpack 5.111.0 → 5.112.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +237 -138
- package/lib/Compiler.js +23 -24
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -69
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +43 -24
- package/lib/NormalModule.js +3 -2190
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +15 -9
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +61 -38
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +15 -9
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +6 -6
- package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
- package/lib/cache/PackFileCacheStrategy.js +11 -28
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +3 -9
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +192 -122
- package/lib/config/getClaimedAssetTypes.js +28 -21
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +57 -42
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +700 -311
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +130 -54
- package/lib/css/data.js +7017 -4648
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -17370
- package/lib/debug/ProfilingPlugin.js +55 -23
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
- package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +20 -18
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/ErrorHelpers.js +222 -0
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
- package/lib/{util → graph}/findGraphRoots.js +20 -21
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +34 -26
- package/lib/html/HtmlGenerator.js +168 -125
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +260 -215
- package/lib/html/HtmlParser.js +598 -292
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +23 -1
- package/lib/html/htmlMinify.js +120 -51
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -14062
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +348 -99
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +25 -18
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +458 -256
- package/lib/javascript/JavascriptParser.js +916 -287
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -10946
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +17 -11
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +207 -285
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
- package/lib/loaders/LoaderRunner.js +160 -22
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +38 -14
- package/lib/{Module.js → module/Module.js} +122 -54
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +61 -15
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +5 -7
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +305 -309
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +17 -23
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +21 -15
- package/lib/optimize/MangleExportsPlugin.js +8 -9
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
- package/lib/optimize/SplitChunksPlugin.js +715 -159
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +25 -30
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +5 -7
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +13 -16
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +82 -65
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +5 -7
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +4 -7
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +19 -19
- package/lib/serialization/ObjectMiddleware.js +77 -49
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +19 -19
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
- package/lib/typescript/TypeScriptPlugin.js +5 -6
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +364 -66
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +32 -151
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -18
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +295 -103
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +4 -1
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +70 -40
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +13915 -8414
- package/lib/ErrorHelpers.js +0 -107
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -71
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1494
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/conventions.js +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -5,58 +5,65 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const ImportedBindingAssignmentError = require("
|
|
9
|
-
const WebpackError = require("
|
|
10
|
-
const getParserHooks = require("
|
|
8
|
+
const ImportedBindingAssignmentError = require("../../errors/ImportedBindingAssignmentError");
|
|
9
|
+
const WebpackError = require("../../errors/WebpackError");
|
|
10
|
+
const getParserHooks = require("../../hmr/parserHooks");
|
|
11
11
|
const {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} = require("
|
|
15
|
-
const { getInnerGraphUtils } = require("
|
|
16
|
-
const ConstDependency = require("
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
12
|
+
getImportAttributes,
|
|
13
|
+
isVariableInfo
|
|
14
|
+
} = require("../../javascript/JavascriptParser");
|
|
15
|
+
const { getInnerGraphUtils } = require("../../optimize/InnerGraph");
|
|
16
|
+
const ConstDependency = require("../core/ConstDependency");
|
|
17
|
+
const {
|
|
18
|
+
ImportPhaseUtils,
|
|
19
|
+
createGetImportPhase
|
|
20
|
+
} = require("../core/ImportPhase");
|
|
21
|
+
const ESMAcceptDependency = require("./ESMAcceptDependency");
|
|
22
|
+
const ESMAcceptImportDependency = require("./ESMAcceptImportDependency");
|
|
23
|
+
const ESMEvaluatedImportSpecifierDependency = require("./ESMEvaluatedImportSpecifierDependency");
|
|
24
|
+
const ESMExports = require("./ESMExports");
|
|
25
|
+
const ESMImportBareSideEffectDependency = require("./ESMImportBareSideEffectDependency");
|
|
22
26
|
const {
|
|
23
27
|
ExportPresenceModes,
|
|
24
28
|
getNonOptionalPart
|
|
25
|
-
} = require("./
|
|
29
|
+
} = require("./ESMImportDependency");
|
|
26
30
|
const {
|
|
27
31
|
attachDependencyGuards,
|
|
28
32
|
isPresentByGuards
|
|
29
|
-
} = require("./
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
|
|
33
|
+
} = require("./ESMImportGuard");
|
|
34
|
+
const ESMImportSideEffectDependency = require("./ESMImportSideEffectDependency");
|
|
35
|
+
const ESMImportSpecifierDependency = require("./ESMImportSpecifierDependency");
|
|
33
36
|
|
|
34
37
|
/**
|
|
35
38
|
* @import {
|
|
36
39
|
* Expression,
|
|
37
40
|
* PrivateIdentifier,
|
|
38
41
|
* Identifier,
|
|
39
|
-
* MemberExpression
|
|
42
|
+
* MemberExpression,
|
|
43
|
+
* Pattern,
|
|
44
|
+
* UpdateExpression
|
|
40
45
|
* } from "estree"
|
|
41
46
|
*/
|
|
42
47
|
/**
|
|
43
48
|
* @import {
|
|
44
49
|
* JavascriptParserOptions
|
|
45
|
-
* } from "
|
|
50
|
+
* } from "../../../declarations/WebpackOptions"
|
|
46
51
|
*/
|
|
47
|
-
/** @import Module from "
|
|
48
|
-
/** @import { JavascriptModuleBuildInfo } from "
|
|
52
|
+
/** @import Module from "../../module/Module" */
|
|
53
|
+
/** @import { JavascriptModuleBuildInfo } from "../../javascript/JavascriptModule" */
|
|
49
54
|
/**
|
|
50
55
|
* @import JavascriptParser, {
|
|
51
56
|
* ImportAttributes,
|
|
52
57
|
* Range,
|
|
53
|
-
* Members
|
|
54
|
-
*
|
|
58
|
+
* Members,
|
|
59
|
+
* WriteStatement
|
|
60
|
+
* } from "../../javascript/JavascriptParser"
|
|
55
61
|
*/
|
|
56
|
-
/** @import { Ids, ExportPresenceMode } from "./
|
|
57
|
-
/** @import { ImportPhaseType } from "
|
|
58
|
-
/** @import { GuardFrame } from "./
|
|
62
|
+
/** @import { Ids, ExportPresenceMode } from "./ESMImportDependency" */
|
|
63
|
+
/** @import { ImportPhaseType } from "../core/ImportPhase" */
|
|
64
|
+
/** @import { GuardFrame } from "./ESMImportGuard" */
|
|
59
65
|
|
|
66
|
+
// TODO in the next major release: rename to `esmSpecifierTag`
|
|
60
67
|
const harmonySpecifierTag = Symbol("harmony import");
|
|
61
68
|
|
|
62
69
|
// Shared placeholder: plain specifier references have no member ranges, so they
|
|
@@ -66,7 +73,7 @@ const EMPTY_ID_RANGES = [];
|
|
|
66
73
|
|
|
67
74
|
/**
|
|
68
75
|
* Defines the harmony settings type used by this module.
|
|
69
|
-
* @typedef {object}
|
|
76
|
+
* @typedef {object} ESMSettings
|
|
70
77
|
* @property {Ids} ids
|
|
71
78
|
* @property {string} source
|
|
72
79
|
* @property {number} sourceOrder
|
|
@@ -75,15 +82,15 @@ const EMPTY_ID_RANGES = [];
|
|
|
75
82
|
* @property {ImportAttributes=} attributes
|
|
76
83
|
* @property {ImportPhaseType} phase
|
|
77
84
|
* @property {boolean} used whether the binding is referenced anywhere
|
|
78
|
-
* @property {
|
|
85
|
+
* @property {ESMImportSideEffectDependency | undefined} dependency the statement's own dependency
|
|
79
86
|
*/
|
|
80
87
|
|
|
81
|
-
const PLUGIN_NAME = "
|
|
88
|
+
const PLUGIN_NAME = "ESMImportDependencyParserPlugin";
|
|
82
89
|
|
|
83
90
|
/**
|
|
84
91
|
* Records that an import binding is referenced, so it is not reported as an
|
|
85
92
|
* unused specifier naming a missing export.
|
|
86
|
-
* @param {
|
|
93
|
+
* @param {ESMSettings | undefined} settings settings of the referenced tag
|
|
87
94
|
* @returns {boolean} true when the reference was a harmony import specifier
|
|
88
95
|
*/
|
|
89
96
|
const markUsed = (settings) => {
|
|
@@ -97,7 +104,7 @@ const markUsed = (settings) => {
|
|
|
97
104
|
* @param {JavascriptParser} parser the parser
|
|
98
105
|
* @param {PrivateIdentifier | Expression} left left expression
|
|
99
106
|
* @param {Expression} right right expression
|
|
100
|
-
* @returns {{ leftPart: string, members: Members, settings:
|
|
107
|
+
* @returns {{ leftPart: string, members: Members, settings: ESMSettings } | undefined} info
|
|
101
108
|
*/
|
|
102
109
|
const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
103
110
|
const leftPartEvaluated = parser.evaluateExpression(left);
|
|
@@ -113,12 +120,12 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
|
113
120
|
const root =
|
|
114
121
|
typeof rootInfo === "string"
|
|
115
122
|
? rootInfo
|
|
116
|
-
: rootInfo
|
|
123
|
+
: isVariableInfo(rootInfo)
|
|
117
124
|
? rootInfo.name
|
|
118
125
|
: undefined;
|
|
119
126
|
if (!root) return;
|
|
120
127
|
|
|
121
|
-
const settings = /** @type {
|
|
128
|
+
const settings = /** @type {ESMSettings | undefined} */ (
|
|
122
129
|
parser.getTagData(root, harmonySpecifierTag)
|
|
123
130
|
);
|
|
124
131
|
if (!settings) {
|
|
@@ -144,7 +151,7 @@ const findImportSpecifier = (parser, node) => {
|
|
|
144
151
|
switch (node.type) {
|
|
145
152
|
case "Identifier":
|
|
146
153
|
return markUsed(
|
|
147
|
-
/** @type {
|
|
154
|
+
/** @type {ESMSettings | undefined} */
|
|
148
155
|
(parser.getTagData(node.name, harmonySpecifierTag))
|
|
149
156
|
);
|
|
150
157
|
case "UnaryExpression":
|
|
@@ -173,9 +180,9 @@ const findImportSpecifier = (parser, node) => {
|
|
|
173
180
|
}
|
|
174
181
|
};
|
|
175
182
|
|
|
176
|
-
class
|
|
183
|
+
class ESMImportDependencyParserPlugin {
|
|
177
184
|
/**
|
|
178
|
-
* Creates an instance of
|
|
185
|
+
* Creates an instance of ESMImportDependencyParserPlugin.
|
|
179
186
|
* @param {JavascriptParserOptions} options options
|
|
180
187
|
*/
|
|
181
188
|
constructor(options) {
|
|
@@ -193,7 +200,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
193
200
|
/**
|
|
194
201
|
* Gets export presence mode.
|
|
195
202
|
* @param {JavascriptParser} parser the parser
|
|
196
|
-
* @param {
|
|
203
|
+
* @param {ESMSettings} settings settings
|
|
197
204
|
* @param {Ids} ids ids
|
|
198
205
|
* @returns {ExportPresenceMode} exportPresenceMode
|
|
199
206
|
*/
|
|
@@ -201,9 +208,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
201
208
|
// Guards only apply to namespace imports
|
|
202
209
|
if (settings.ids.length) return this.exportPresenceMode;
|
|
203
210
|
|
|
204
|
-
const harmonySettings = /** @type {
|
|
205
|
-
parser.currentTagData
|
|
206
|
-
);
|
|
211
|
+
const harmonySettings = /** @type {ESMSettings=} */ (parser.currentTagData);
|
|
207
212
|
if (!harmonySettings) return this.exportPresenceMode;
|
|
208
213
|
|
|
209
214
|
if (this.exportPresenceMode === ExportPresenceModes.NONE) {
|
|
@@ -234,20 +239,34 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
234
239
|
this.options.sourceImport
|
|
235
240
|
);
|
|
236
241
|
|
|
237
|
-
// Parsers are reused across modules, so
|
|
238
|
-
/** @type {
|
|
242
|
+
// Parsers are reused across modules, so all three are reset per program.
|
|
243
|
+
/** @type {ESMSettings[]} */
|
|
239
244
|
const declaredSpecifiers = [];
|
|
240
|
-
/** @type {
|
|
245
|
+
/** @type {ESMImportSideEffectDependency | undefined} */
|
|
241
246
|
let lastSideEffectDependency;
|
|
247
|
+
/** @type {Identifier | MemberExpression | undefined} */
|
|
248
|
+
let assignmentTarget;
|
|
242
249
|
|
|
243
250
|
parser.hooks.program.tap(PLUGIN_NAME, () => {
|
|
244
251
|
declaredSpecifiers.length = 0;
|
|
245
252
|
lastSideEffectDependency = undefined;
|
|
253
|
+
assignmentTarget = undefined;
|
|
246
254
|
});
|
|
247
255
|
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|
|
248
256
|
for (const settings of declaredSpecifiers) {
|
|
249
257
|
const dependency = settings.dependency;
|
|
250
|
-
if (dependency === undefined
|
|
258
|
+
if (dependency === undefined) continue;
|
|
259
|
+
// A namespace import names no export, so no reference site answers for
|
|
260
|
+
// it. Recorded whatever the devtool is: a module the cache restores is
|
|
261
|
+
// never parsed again, and the option reading it is chosen afterwards.
|
|
262
|
+
if (settings.ids.length === 0) {
|
|
263
|
+
if (dependency.namespaceSpecifiers === undefined) {
|
|
264
|
+
dependency.namespaceSpecifiers = [];
|
|
265
|
+
}
|
|
266
|
+
dependency.namespaceSpecifiers.push(settings.name);
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (settings.used) continue;
|
|
251
270
|
if (dependency.unusedSpecifiers === undefined) {
|
|
252
271
|
dependency.unusedSpecifiers = {
|
|
253
272
|
exportPresenceMode: this.exportPresenceMode,
|
|
@@ -261,6 +280,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
261
280
|
}
|
|
262
281
|
declaredSpecifiers.length = 0;
|
|
263
282
|
lastSideEffectDependency = undefined;
|
|
283
|
+
assignmentTarget = undefined;
|
|
264
284
|
});
|
|
265
285
|
|
|
266
286
|
/**
|
|
@@ -279,7 +299,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
279
299
|
if (
|
|
280
300
|
parser.isVariableDefined(expr.name) ||
|
|
281
301
|
markUsed(
|
|
282
|
-
/** @type {
|
|
302
|
+
/** @type {ESMSettings | undefined} */
|
|
283
303
|
(parser.getTagData(expr.name, harmonySpecifierTag))
|
|
284
304
|
)
|
|
285
305
|
) {
|
|
@@ -287,8 +307,8 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
287
307
|
}
|
|
288
308
|
});
|
|
289
309
|
parser.hooks.import.tap(PLUGIN_NAME, (statement, source) => {
|
|
290
|
-
parser.state.
|
|
291
|
-
(parser.state.
|
|
310
|
+
parser.state.lastESMImportOrder =
|
|
311
|
+
(parser.state.lastESMImportOrder || 0) + 1;
|
|
292
312
|
const clearDep = new ConstDependency(
|
|
293
313
|
parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
|
|
294
314
|
? ";"
|
|
@@ -316,11 +336,11 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
316
336
|
// which for a module emitting its own file is that file.
|
|
317
337
|
const SideEffectDependency =
|
|
318
338
|
statement.specifiers.length === 0
|
|
319
|
-
?
|
|
320
|
-
:
|
|
339
|
+
? ESMImportBareSideEffectDependency
|
|
340
|
+
: ESMImportSideEffectDependency;
|
|
321
341
|
const sideEffectDep = new SideEffectDependency(
|
|
322
342
|
/** @type {string} */ (source),
|
|
323
|
-
parser.state.
|
|
343
|
+
parser.state.lastESMImportOrder,
|
|
324
344
|
phase,
|
|
325
345
|
attributes
|
|
326
346
|
);
|
|
@@ -334,20 +354,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
334
354
|
(statement, source, id, name) => {
|
|
335
355
|
const ids = id === null ? [] : [id];
|
|
336
356
|
const phase = getImportPhase(parser, statement);
|
|
337
|
-
const settings = /** @type {
|
|
357
|
+
const settings = /** @type {ESMSettings} */ ({
|
|
338
358
|
name,
|
|
339
359
|
source,
|
|
340
360
|
ids,
|
|
341
|
-
sourceOrder: parser.state.
|
|
361
|
+
sourceOrder: parser.state.lastESMImportOrder,
|
|
342
362
|
attributes: getImportAttributes(statement),
|
|
343
363
|
phase,
|
|
344
364
|
used: false,
|
|
345
365
|
dependency: lastSideEffectDependency
|
|
346
366
|
});
|
|
347
367
|
parser.tagVariable(name, harmonySpecifierTag, settings);
|
|
348
|
-
|
|
349
|
-
// one still resolves; a namespace import names no export.
|
|
350
|
-
if (ids.length !== 0) declaredSpecifiers.push(settings);
|
|
368
|
+
declaredSpecifiers.push(settings);
|
|
351
369
|
return true;
|
|
352
370
|
}
|
|
353
371
|
);
|
|
@@ -361,7 +379,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
361
379
|
if (!info) return;
|
|
362
380
|
|
|
363
381
|
const { leftPart, members, settings } = info;
|
|
364
|
-
const dep = new
|
|
382
|
+
const dep = new ESMEvaluatedImportSpecifierDependency(
|
|
365
383
|
settings.source,
|
|
366
384
|
settings.sourceOrder,
|
|
367
385
|
[...settings.ids, ...members, leftPart],
|
|
@@ -388,10 +406,10 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
388
406
|
const nameInfo = parser.getNameForExpression(expr);
|
|
389
407
|
if (
|
|
390
408
|
nameInfo &&
|
|
391
|
-
nameInfo.rootInfo
|
|
409
|
+
isVariableInfo(nameInfo.rootInfo) &&
|
|
392
410
|
nameInfo.rootInfo.name &&
|
|
393
411
|
markUsed(
|
|
394
|
-
/** @type {
|
|
412
|
+
/** @type {ESMSettings | undefined} */
|
|
395
413
|
(parser.getTagData(nameInfo.rootInfo.name, harmonySpecifierTag))
|
|
396
414
|
)
|
|
397
415
|
) {
|
|
@@ -399,14 +417,48 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
399
417
|
}
|
|
400
418
|
}
|
|
401
419
|
);
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
420
|
+
/**
|
|
421
|
+
* The reference a write lands on, which is a pattern for a
|
|
422
|
+
* destructuring write.
|
|
423
|
+
* @param {WriteStatement} node the construct performing the write
|
|
424
|
+
* @returns {Pattern | MemberExpression} the written reference
|
|
425
|
+
*/
|
|
426
|
+
const writeTargetOf = (node) =>
|
|
427
|
+
/** @type {Pattern | MemberExpression} */ (
|
|
428
|
+
node.type === "UpdateExpression" ? node.argument : node.left
|
|
429
|
+
);
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Whether a member write lands on the namespace object itself, which is
|
|
433
|
+
* read-only. A property of an imported object is an ordinary write.
|
|
434
|
+
* @param {ESMSettings} settings the specifier's settings
|
|
435
|
+
* @param {Members} members the member chain
|
|
436
|
+
* @returns {boolean} true when the write targets a namespace member
|
|
437
|
+
*/
|
|
438
|
+
const isNamespaceMemberWrite = (settings, members) =>
|
|
439
|
+
settings.ids.length === 0 && members.length === 1;
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Keeps the module whole, for a write whose reference the output has no
|
|
443
|
+
* way to flag.
|
|
444
|
+
* @returns {void}
|
|
445
|
+
*/
|
|
446
|
+
const bailOutOfConcatenation = () => {
|
|
407
447
|
/** @type {JavascriptModuleBuildInfo} */
|
|
408
448
|
(parser.state.module.buildInfo).moduleConcatenationBailout =
|
|
409
449
|
"assignment to an imported binding";
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Records the write target of an assignment or update to an imported
|
|
454
|
+
* binding, so the reference walked next renders as a throwing write.
|
|
455
|
+
* @param {WriteStatement} expr the write
|
|
456
|
+
* @param {Identifier | MemberExpression | undefined} target the written reference, if any
|
|
457
|
+
* @returns {void}
|
|
458
|
+
*/
|
|
459
|
+
const markImportedBindingWrite = (expr, target) => {
|
|
460
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
461
|
+
markUsed(settings);
|
|
410
462
|
// A named import is written through the namespace's getter-only
|
|
411
463
|
// property, which throws on its own. A namespace one is the binding
|
|
412
464
|
// itself, and nothing webpack can emit for it throws, so report it.
|
|
@@ -414,15 +466,55 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
414
466
|
const error = new ImportedBindingAssignmentError(settings.name);
|
|
415
467
|
error.loc = parser.getLocation(expr);
|
|
416
468
|
parser.state.module.addError(error);
|
|
469
|
+
} else if (target) {
|
|
470
|
+
assignmentTarget = target;
|
|
471
|
+
} else {
|
|
472
|
+
// A destructuring target emits no reference to flag, so the whole
|
|
473
|
+
// module stays out of concatenation.
|
|
474
|
+
bailOutOfConcatenation();
|
|
417
475
|
}
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
parser.hooks.assign.for(harmonySpecifierTag).tap(PLUGIN_NAME, (expr) => {
|
|
479
|
+
markImportedBindingWrite(
|
|
480
|
+
expr,
|
|
481
|
+
expr.left.type === "Identifier" ? expr.left : undefined
|
|
482
|
+
);
|
|
483
|
+
});
|
|
484
|
+
parser.hooks.write.for(harmonySpecifierTag).tap(PLUGIN_NAME, (node) => {
|
|
485
|
+
const written = writeTargetOf(node);
|
|
486
|
+
const target =
|
|
487
|
+
written.type === "Identifier"
|
|
488
|
+
? /** @type {Identifier} */ (written)
|
|
489
|
+
: undefined;
|
|
490
|
+
markImportedBindingWrite(node, target);
|
|
491
|
+
// A loop's binding walks nothing on its own, so the reference the
|
|
492
|
+
// write renders as has to be walked here to exist at all.
|
|
493
|
+
if (!target || node.type === "UpdateExpression") return;
|
|
494
|
+
parser.walkExpression(target);
|
|
495
|
+
return true;
|
|
418
496
|
});
|
|
497
|
+
// A namespace member is written through the reference its member chain
|
|
498
|
+
// emits, so both write forms flag that reference rather than the binding.
|
|
499
|
+
parser.hooks.writeMemberChain
|
|
500
|
+
.for(harmonySpecifierTag)
|
|
501
|
+
.tap(PLUGIN_NAME, (node, members) => {
|
|
502
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
503
|
+
if (!isNamespaceMemberWrite(settings, members)) return;
|
|
504
|
+
const written = writeTargetOf(node);
|
|
505
|
+
if (written.type === "MemberExpression") {
|
|
506
|
+
assignmentTarget = written;
|
|
507
|
+
} else {
|
|
508
|
+
bailOutOfConcatenation();
|
|
509
|
+
}
|
|
510
|
+
});
|
|
419
511
|
parser.hooks.expression
|
|
420
512
|
.for(harmonySpecifierTag)
|
|
421
513
|
.tap(PLUGIN_NAME, (expr) => {
|
|
422
|
-
const settings = /** @type {
|
|
514
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
423
515
|
settings.used = true;
|
|
424
516
|
|
|
425
|
-
const dep = new
|
|
517
|
+
const dep = new ESMImportSpecifierDependency(
|
|
426
518
|
settings.source,
|
|
427
519
|
settings.sourceOrder,
|
|
428
520
|
settings.ids,
|
|
@@ -443,6 +535,10 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
443
535
|
);
|
|
444
536
|
dep.loc = parser.getLocation(expr);
|
|
445
537
|
dep.call = parser.scope.inTaggedTemplateTag;
|
|
538
|
+
if (assignmentTarget === expr) {
|
|
539
|
+
dep.assignment = true;
|
|
540
|
+
assignmentTarget = undefined;
|
|
541
|
+
}
|
|
446
542
|
parser.state.module.addDependency(dep);
|
|
447
543
|
attachDependencyGuards(parser, dep);
|
|
448
544
|
getInnerGraphUtils(parser.state.compilation).onUsage(
|
|
@@ -457,18 +553,21 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
457
553
|
PLUGIN_NAME,
|
|
458
554
|
(expression, members, membersOptionals, memberRanges) => {
|
|
459
555
|
const settings =
|
|
460
|
-
/** @type {
|
|
556
|
+
/** @type {ESMSettings} */
|
|
461
557
|
(parser.currentTagData);
|
|
462
558
|
settings.used = true;
|
|
463
559
|
const nonOptionalMembers = getNonOptionalPart(
|
|
464
560
|
members,
|
|
465
561
|
membersOptionals
|
|
466
562
|
);
|
|
563
|
+
const rangeCount =
|
|
564
|
+
memberRanges.length - (members.length - nonOptionalMembers.length);
|
|
565
|
+
// Nothing left to record is the common case, so share one array.
|
|
467
566
|
/** @type {Range[]} */
|
|
468
|
-
const ranges =
|
|
469
|
-
0
|
|
470
|
-
|
|
471
|
-
|
|
567
|
+
const ranges =
|
|
568
|
+
rangeCount > 0
|
|
569
|
+
? memberRanges.slice(0, rangeCount)
|
|
570
|
+
: EMPTY_ID_RANGES;
|
|
472
571
|
const expr =
|
|
473
572
|
nonOptionalMembers !== members
|
|
474
573
|
? getNonOptionalMemberChain(
|
|
@@ -477,7 +576,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
477
576
|
)
|
|
478
577
|
: expression;
|
|
479
578
|
const ids = [...settings.ids, ...nonOptionalMembers];
|
|
480
|
-
const dep = new
|
|
579
|
+
const dep = new ESMImportSpecifierDependency(
|
|
481
580
|
settings.source,
|
|
482
581
|
settings.sourceOrder,
|
|
483
582
|
ids,
|
|
@@ -496,6 +595,10 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
496
595
|
(expr.range)[0]
|
|
497
596
|
);
|
|
498
597
|
dep.loc = parser.getLocation(expr);
|
|
598
|
+
if (assignmentTarget === expression) {
|
|
599
|
+
dep.assignment = true;
|
|
600
|
+
assignmentTarget = undefined;
|
|
601
|
+
}
|
|
499
602
|
parser.state.module.addDependency(dep);
|
|
500
603
|
attachDependencyGuards(parser, dep);
|
|
501
604
|
getInnerGraphUtils(parser.state.compilation).onUsage(
|
|
@@ -512,19 +615,20 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
512
615
|
(expression, members, membersOptionals, memberRanges) => {
|
|
513
616
|
const { arguments: args } = expression;
|
|
514
617
|
const callee = /** @type {MemberExpression} */ (expression.callee);
|
|
515
|
-
const settings = /** @type {
|
|
516
|
-
parser.currentTagData
|
|
517
|
-
);
|
|
618
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
518
619
|
settings.used = true;
|
|
519
620
|
const nonOptionalMembers = getNonOptionalPart(
|
|
520
621
|
members,
|
|
521
622
|
membersOptionals
|
|
522
623
|
);
|
|
624
|
+
const rangeCount =
|
|
625
|
+
memberRanges.length - (members.length - nonOptionalMembers.length);
|
|
626
|
+
// Nothing left to record is the common case, so share one array.
|
|
523
627
|
/** @type {Range[]} */
|
|
524
|
-
const ranges =
|
|
525
|
-
0
|
|
526
|
-
|
|
527
|
-
|
|
628
|
+
const ranges =
|
|
629
|
+
rangeCount > 0
|
|
630
|
+
? memberRanges.slice(0, rangeCount)
|
|
631
|
+
: EMPTY_ID_RANGES;
|
|
528
632
|
const expr =
|
|
529
633
|
nonOptionalMembers !== members
|
|
530
634
|
? getNonOptionalMemberChain(
|
|
@@ -533,7 +637,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
533
637
|
)
|
|
534
638
|
: callee;
|
|
535
639
|
const ids = [...settings.ids, ...nonOptionalMembers];
|
|
536
|
-
const dep = new
|
|
640
|
+
const dep = new ESMImportSpecifierDependency(
|
|
537
641
|
settings.source,
|
|
538
642
|
settings.sourceOrder,
|
|
539
643
|
ids,
|
|
@@ -564,19 +668,17 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
564
668
|
return true;
|
|
565
669
|
}
|
|
566
670
|
);
|
|
567
|
-
//
|
|
568
|
-
//
|
|
569
|
-
//
|
|
570
|
-
// whose `.a` getter eagerly requires (and thus evaluates) the
|
|
571
|
-
// deferred module. For top-level `ns.foo = value`, walk only the
|
|
572
|
-
// bare `ns` identifier so it gets replaced with the deferred
|
|
573
|
-
// namespace proxy (whose set trap returns false), and leave the
|
|
574
|
-
// `.foo = value` part as plain code.
|
|
671
|
+
// `[[Set]]` on a Module Namespace returns false without evaluating, yet the
|
|
672
|
+
// member-chain path emits `<importVar>.a.foo`, whose getter evaluates. So
|
|
673
|
+
// only the bare `ns` is walked, leaving `.foo = value` as plain code.
|
|
575
674
|
parser.hooks.assignMemberChain
|
|
576
675
|
.for(harmonySpecifierTag)
|
|
577
676
|
.tap(PLUGIN_NAME, (expression, members) => {
|
|
578
|
-
const settings = /** @type {
|
|
677
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
579
678
|
settings.used = true;
|
|
679
|
+
if (isNamespaceMemberWrite(settings, members)) {
|
|
680
|
+
assignmentTarget = /** @type {MemberExpression} */ (expression.left);
|
|
681
|
+
}
|
|
580
682
|
if (!ImportPhaseUtils.isDefer(settings.phase)) return;
|
|
581
683
|
if (expression.operator !== "=") return;
|
|
582
684
|
if (members.length !== 1) return;
|
|
@@ -589,18 +691,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
589
691
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
590
692
|
getParserHooks(parser);
|
|
591
693
|
hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
592
|
-
if (!
|
|
694
|
+
if (!ESMExports.isEnabled(parser.state)) {
|
|
593
695
|
// This is not a harmony module, skip it
|
|
594
696
|
return;
|
|
595
697
|
}
|
|
596
698
|
const dependencies = requests.map((request) => {
|
|
597
|
-
const dep = new
|
|
699
|
+
const dep = new ESMAcceptImportDependency(request);
|
|
598
700
|
dep.loc = parser.getLocation(expr);
|
|
599
701
|
parser.state.module.addDependency(dep);
|
|
600
702
|
return dep;
|
|
601
703
|
});
|
|
602
704
|
if (dependencies.length > 0) {
|
|
603
|
-
const dep = new
|
|
705
|
+
const dep = new ESMAcceptDependency(
|
|
604
706
|
/** @type {Range} */
|
|
605
707
|
(expr.range),
|
|
606
708
|
dependencies,
|
|
@@ -611,18 +713,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
611
713
|
}
|
|
612
714
|
});
|
|
613
715
|
hotAcceptWithoutCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
614
|
-
if (!
|
|
716
|
+
if (!ESMExports.isEnabled(parser.state)) {
|
|
615
717
|
// This is not a harmony module, skip it
|
|
616
718
|
return;
|
|
617
719
|
}
|
|
618
720
|
const dependencies = requests.map((request) => {
|
|
619
|
-
const dep = new
|
|
721
|
+
const dep = new ESMAcceptImportDependency(request);
|
|
620
722
|
dep.loc = parser.getLocation(expr);
|
|
621
723
|
parser.state.module.addDependency(dep);
|
|
622
724
|
return dep;
|
|
623
725
|
});
|
|
624
726
|
if (dependencies.length > 0) {
|
|
625
|
-
const dep = new
|
|
727
|
+
const dep = new ESMAcceptDependency(
|
|
626
728
|
/** @type {Range} */
|
|
627
729
|
(expr.range),
|
|
628
730
|
dependencies,
|
|
@@ -660,6 +762,6 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
660
762
|
}
|
|
661
763
|
}
|
|
662
764
|
|
|
663
|
-
|
|
765
|
+
ESMImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
|
|
664
766
|
|
|
665
|
-
module.exports =
|
|
767
|
+
module.exports = ESMImportDependencyParserPlugin;
|