@depup/webpack 5.111.1-depup.2 → 5.112.0-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -8
- package/changes.json +3 -19
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +224 -106
- package/lib/Compiler.js +19 -19
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +8 -8
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +36 -22
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +8 -8
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +8 -10
- package/lib/cache/ResolverCachePlugin.js +8 -4
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +144 -48
- package/lib/config/getClaimedAssetTypes.js +21 -13
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +36 -25
- package/lib/context/ContextModuleFactory.js +13 -10
- package/lib/context/ContextReplacementPlugin.js +3 -3
- package/lib/css/CssGenerator.js +38 -31
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +682 -291
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6985 -5125
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +52 -19
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +20 -18
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +4 -4
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
- package/lib/{util → graph}/findGraphRoots.js +14 -8
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +31 -21
- package/lib/html/HtmlGenerator.js +107 -43
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +172 -76
- package/lib/html/HtmlParser.js +503 -153
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +2 -1
- package/lib/html/htmlMinify.js +111 -41
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +303 -97
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +17 -17
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +440 -211
- package/lib/javascript/JavascriptParser.js +220 -134
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +10 -10
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +160 -166
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +31 -21
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +16 -14
- package/lib/{Module.js → module/Module.js} +119 -51
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +229 -214
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +584 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
- package/lib/optimize/SplitChunksPlugin.js +713 -155
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +3 -3
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +8 -7
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +65 -44
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +47 -16
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
- package/lib/{Template.js → template/Template.js} +13 -11
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +349 -44
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +94 -15
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +294 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +4 -1
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +48 -41
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +19355 -13873
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/conventions.js +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -5,31 +5,34 @@
|
|
|
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 {
|
|
@@ -44,22 +47,23 @@ const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
|
|
|
44
47
|
/**
|
|
45
48
|
* @import {
|
|
46
49
|
* JavascriptParserOptions
|
|
47
|
-
* } from "
|
|
50
|
+
* } from "../../../declarations/WebpackOptions"
|
|
48
51
|
*/
|
|
49
|
-
/** @import Module from "
|
|
50
|
-
/** @import { JavascriptModuleBuildInfo } from "
|
|
52
|
+
/** @import Module from "../../module/Module" */
|
|
53
|
+
/** @import { JavascriptModuleBuildInfo } from "../../javascript/JavascriptModule" */
|
|
51
54
|
/**
|
|
52
55
|
* @import JavascriptParser, {
|
|
53
56
|
* ImportAttributes,
|
|
54
57
|
* Range,
|
|
55
58
|
* Members,
|
|
56
59
|
* WriteStatement
|
|
57
|
-
* } from "
|
|
60
|
+
* } from "../../javascript/JavascriptParser"
|
|
58
61
|
*/
|
|
59
|
-
/** @import { Ids, ExportPresenceMode } from "./
|
|
60
|
-
/** @import { ImportPhaseType } from "
|
|
61
|
-
/** @import { GuardFrame } from "./
|
|
62
|
+
/** @import { Ids, ExportPresenceMode } from "./ESMImportDependency" */
|
|
63
|
+
/** @import { ImportPhaseType } from "../core/ImportPhase" */
|
|
64
|
+
/** @import { GuardFrame } from "./ESMImportGuard" */
|
|
62
65
|
|
|
66
|
+
// TODO in the next major release: rename to `esmSpecifierTag`
|
|
63
67
|
const harmonySpecifierTag = Symbol("harmony import");
|
|
64
68
|
|
|
65
69
|
// Shared placeholder: plain specifier references have no member ranges, so they
|
|
@@ -69,7 +73,7 @@ const EMPTY_ID_RANGES = [];
|
|
|
69
73
|
|
|
70
74
|
/**
|
|
71
75
|
* Defines the harmony settings type used by this module.
|
|
72
|
-
* @typedef {object}
|
|
76
|
+
* @typedef {object} ESMSettings
|
|
73
77
|
* @property {Ids} ids
|
|
74
78
|
* @property {string} source
|
|
75
79
|
* @property {number} sourceOrder
|
|
@@ -78,15 +82,15 @@ const EMPTY_ID_RANGES = [];
|
|
|
78
82
|
* @property {ImportAttributes=} attributes
|
|
79
83
|
* @property {ImportPhaseType} phase
|
|
80
84
|
* @property {boolean} used whether the binding is referenced anywhere
|
|
81
|
-
* @property {
|
|
85
|
+
* @property {ESMImportSideEffectDependency | undefined} dependency the statement's own dependency
|
|
82
86
|
*/
|
|
83
87
|
|
|
84
|
-
const PLUGIN_NAME = "
|
|
88
|
+
const PLUGIN_NAME = "ESMImportDependencyParserPlugin";
|
|
85
89
|
|
|
86
90
|
/**
|
|
87
91
|
* Records that an import binding is referenced, so it is not reported as an
|
|
88
92
|
* unused specifier naming a missing export.
|
|
89
|
-
* @param {
|
|
93
|
+
* @param {ESMSettings | undefined} settings settings of the referenced tag
|
|
90
94
|
* @returns {boolean} true when the reference was a harmony import specifier
|
|
91
95
|
*/
|
|
92
96
|
const markUsed = (settings) => {
|
|
@@ -100,7 +104,7 @@ const markUsed = (settings) => {
|
|
|
100
104
|
* @param {JavascriptParser} parser the parser
|
|
101
105
|
* @param {PrivateIdentifier | Expression} left left expression
|
|
102
106
|
* @param {Expression} right right expression
|
|
103
|
-
* @returns {{ leftPart: string, members: Members, settings:
|
|
107
|
+
* @returns {{ leftPart: string, members: Members, settings: ESMSettings } | undefined} info
|
|
104
108
|
*/
|
|
105
109
|
const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
106
110
|
const leftPartEvaluated = parser.evaluateExpression(left);
|
|
@@ -116,12 +120,12 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
|
116
120
|
const root =
|
|
117
121
|
typeof rootInfo === "string"
|
|
118
122
|
? rootInfo
|
|
119
|
-
: rootInfo
|
|
123
|
+
: isVariableInfo(rootInfo)
|
|
120
124
|
? rootInfo.name
|
|
121
125
|
: undefined;
|
|
122
126
|
if (!root) return;
|
|
123
127
|
|
|
124
|
-
const settings = /** @type {
|
|
128
|
+
const settings = /** @type {ESMSettings | undefined} */ (
|
|
125
129
|
parser.getTagData(root, harmonySpecifierTag)
|
|
126
130
|
);
|
|
127
131
|
if (!settings) {
|
|
@@ -147,7 +151,7 @@ const findImportSpecifier = (parser, node) => {
|
|
|
147
151
|
switch (node.type) {
|
|
148
152
|
case "Identifier":
|
|
149
153
|
return markUsed(
|
|
150
|
-
/** @type {
|
|
154
|
+
/** @type {ESMSettings | undefined} */
|
|
151
155
|
(parser.getTagData(node.name, harmonySpecifierTag))
|
|
152
156
|
);
|
|
153
157
|
case "UnaryExpression":
|
|
@@ -176,9 +180,9 @@ const findImportSpecifier = (parser, node) => {
|
|
|
176
180
|
}
|
|
177
181
|
};
|
|
178
182
|
|
|
179
|
-
class
|
|
183
|
+
class ESMImportDependencyParserPlugin {
|
|
180
184
|
/**
|
|
181
|
-
* Creates an instance of
|
|
185
|
+
* Creates an instance of ESMImportDependencyParserPlugin.
|
|
182
186
|
* @param {JavascriptParserOptions} options options
|
|
183
187
|
*/
|
|
184
188
|
constructor(options) {
|
|
@@ -196,7 +200,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
196
200
|
/**
|
|
197
201
|
* Gets export presence mode.
|
|
198
202
|
* @param {JavascriptParser} parser the parser
|
|
199
|
-
* @param {
|
|
203
|
+
* @param {ESMSettings} settings settings
|
|
200
204
|
* @param {Ids} ids ids
|
|
201
205
|
* @returns {ExportPresenceMode} exportPresenceMode
|
|
202
206
|
*/
|
|
@@ -204,9 +208,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
204
208
|
// Guards only apply to namespace imports
|
|
205
209
|
if (settings.ids.length) return this.exportPresenceMode;
|
|
206
210
|
|
|
207
|
-
const harmonySettings = /** @type {
|
|
208
|
-
parser.currentTagData
|
|
209
|
-
);
|
|
211
|
+
const harmonySettings = /** @type {ESMSettings=} */ (parser.currentTagData);
|
|
210
212
|
if (!harmonySettings) return this.exportPresenceMode;
|
|
211
213
|
|
|
212
214
|
if (this.exportPresenceMode === ExportPresenceModes.NONE) {
|
|
@@ -238,9 +240,9 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
238
240
|
);
|
|
239
241
|
|
|
240
242
|
// Parsers are reused across modules, so all three are reset per program.
|
|
241
|
-
/** @type {
|
|
243
|
+
/** @type {ESMSettings[]} */
|
|
242
244
|
const declaredSpecifiers = [];
|
|
243
|
-
/** @type {
|
|
245
|
+
/** @type {ESMImportSideEffectDependency | undefined} */
|
|
244
246
|
let lastSideEffectDependency;
|
|
245
247
|
/** @type {Identifier | MemberExpression | undefined} */
|
|
246
248
|
let assignmentTarget;
|
|
@@ -253,7 +255,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
253
255
|
parser.hooks.finish.tap(PLUGIN_NAME, () => {
|
|
254
256
|
for (const settings of declaredSpecifiers) {
|
|
255
257
|
const dependency = settings.dependency;
|
|
256
|
-
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;
|
|
257
270
|
if (dependency.unusedSpecifiers === undefined) {
|
|
258
271
|
dependency.unusedSpecifiers = {
|
|
259
272
|
exportPresenceMode: this.exportPresenceMode,
|
|
@@ -286,7 +299,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
286
299
|
if (
|
|
287
300
|
parser.isVariableDefined(expr.name) ||
|
|
288
301
|
markUsed(
|
|
289
|
-
/** @type {
|
|
302
|
+
/** @type {ESMSettings | undefined} */
|
|
290
303
|
(parser.getTagData(expr.name, harmonySpecifierTag))
|
|
291
304
|
)
|
|
292
305
|
) {
|
|
@@ -294,8 +307,8 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
294
307
|
}
|
|
295
308
|
});
|
|
296
309
|
parser.hooks.import.tap(PLUGIN_NAME, (statement, source) => {
|
|
297
|
-
parser.state.
|
|
298
|
-
(parser.state.
|
|
310
|
+
parser.state.lastESMImportOrder =
|
|
311
|
+
(parser.state.lastESMImportOrder || 0) + 1;
|
|
299
312
|
const clearDep = new ConstDependency(
|
|
300
313
|
parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
|
|
301
314
|
? ";"
|
|
@@ -323,11 +336,11 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
323
336
|
// which for a module emitting its own file is that file.
|
|
324
337
|
const SideEffectDependency =
|
|
325
338
|
statement.specifiers.length === 0
|
|
326
|
-
?
|
|
327
|
-
:
|
|
339
|
+
? ESMImportBareSideEffectDependency
|
|
340
|
+
: ESMImportSideEffectDependency;
|
|
328
341
|
const sideEffectDep = new SideEffectDependency(
|
|
329
342
|
/** @type {string} */ (source),
|
|
330
|
-
parser.state.
|
|
343
|
+
parser.state.lastESMImportOrder,
|
|
331
344
|
phase,
|
|
332
345
|
attributes
|
|
333
346
|
);
|
|
@@ -341,20 +354,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
341
354
|
(statement, source, id, name) => {
|
|
342
355
|
const ids = id === null ? [] : [id];
|
|
343
356
|
const phase = getImportPhase(parser, statement);
|
|
344
|
-
const settings = /** @type {
|
|
357
|
+
const settings = /** @type {ESMSettings} */ ({
|
|
345
358
|
name,
|
|
346
359
|
source,
|
|
347
360
|
ids,
|
|
348
|
-
sourceOrder: parser.state.
|
|
361
|
+
sourceOrder: parser.state.lastESMImportOrder,
|
|
349
362
|
attributes: getImportAttributes(statement),
|
|
350
363
|
phase,
|
|
351
364
|
used: false,
|
|
352
365
|
dependency: lastSideEffectDependency
|
|
353
366
|
});
|
|
354
367
|
parser.tagVariable(name, harmonySpecifierTag, settings);
|
|
355
|
-
|
|
356
|
-
// one still resolves; a namespace import names no export.
|
|
357
|
-
if (ids.length !== 0) declaredSpecifiers.push(settings);
|
|
368
|
+
declaredSpecifiers.push(settings);
|
|
358
369
|
return true;
|
|
359
370
|
}
|
|
360
371
|
);
|
|
@@ -368,7 +379,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
368
379
|
if (!info) return;
|
|
369
380
|
|
|
370
381
|
const { leftPart, members, settings } = info;
|
|
371
|
-
const dep = new
|
|
382
|
+
const dep = new ESMEvaluatedImportSpecifierDependency(
|
|
372
383
|
settings.source,
|
|
373
384
|
settings.sourceOrder,
|
|
374
385
|
[...settings.ids, ...members, leftPart],
|
|
@@ -395,10 +406,10 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
395
406
|
const nameInfo = parser.getNameForExpression(expr);
|
|
396
407
|
if (
|
|
397
408
|
nameInfo &&
|
|
398
|
-
nameInfo.rootInfo
|
|
409
|
+
isVariableInfo(nameInfo.rootInfo) &&
|
|
399
410
|
nameInfo.rootInfo.name &&
|
|
400
411
|
markUsed(
|
|
401
|
-
/** @type {
|
|
412
|
+
/** @type {ESMSettings | undefined} */
|
|
402
413
|
(parser.getTagData(nameInfo.rootInfo.name, harmonySpecifierTag))
|
|
403
414
|
)
|
|
404
415
|
) {
|
|
@@ -420,7 +431,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
420
431
|
/**
|
|
421
432
|
* Whether a member write lands on the namespace object itself, which is
|
|
422
433
|
* read-only. A property of an imported object is an ordinary write.
|
|
423
|
-
* @param {
|
|
434
|
+
* @param {ESMSettings} settings the specifier's settings
|
|
424
435
|
* @param {Members} members the member chain
|
|
425
436
|
* @returns {boolean} true when the write targets a namespace member
|
|
426
437
|
*/
|
|
@@ -446,7 +457,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
446
457
|
* @returns {void}
|
|
447
458
|
*/
|
|
448
459
|
const markImportedBindingWrite = (expr, target) => {
|
|
449
|
-
const settings = /** @type {
|
|
460
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
450
461
|
markUsed(settings);
|
|
451
462
|
// A named import is written through the namespace's getter-only
|
|
452
463
|
// property, which throws on its own. A namespace one is the binding
|
|
@@ -488,7 +499,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
488
499
|
parser.hooks.writeMemberChain
|
|
489
500
|
.for(harmonySpecifierTag)
|
|
490
501
|
.tap(PLUGIN_NAME, (node, members) => {
|
|
491
|
-
const settings = /** @type {
|
|
502
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
492
503
|
if (!isNamespaceMemberWrite(settings, members)) return;
|
|
493
504
|
const written = writeTargetOf(node);
|
|
494
505
|
if (written.type === "MemberExpression") {
|
|
@@ -500,10 +511,10 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
500
511
|
parser.hooks.expression
|
|
501
512
|
.for(harmonySpecifierTag)
|
|
502
513
|
.tap(PLUGIN_NAME, (expr) => {
|
|
503
|
-
const settings = /** @type {
|
|
514
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
504
515
|
settings.used = true;
|
|
505
516
|
|
|
506
|
-
const dep = new
|
|
517
|
+
const dep = new ESMImportSpecifierDependency(
|
|
507
518
|
settings.source,
|
|
508
519
|
settings.sourceOrder,
|
|
509
520
|
settings.ids,
|
|
@@ -542,18 +553,21 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
542
553
|
PLUGIN_NAME,
|
|
543
554
|
(expression, members, membersOptionals, memberRanges) => {
|
|
544
555
|
const settings =
|
|
545
|
-
/** @type {
|
|
556
|
+
/** @type {ESMSettings} */
|
|
546
557
|
(parser.currentTagData);
|
|
547
558
|
settings.used = true;
|
|
548
559
|
const nonOptionalMembers = getNonOptionalPart(
|
|
549
560
|
members,
|
|
550
561
|
membersOptionals
|
|
551
562
|
);
|
|
563
|
+
const rangeCount =
|
|
564
|
+
memberRanges.length - (members.length - nonOptionalMembers.length);
|
|
565
|
+
// Nothing left to record is the common case, so share one array.
|
|
552
566
|
/** @type {Range[]} */
|
|
553
|
-
const ranges =
|
|
554
|
-
0
|
|
555
|
-
|
|
556
|
-
|
|
567
|
+
const ranges =
|
|
568
|
+
rangeCount > 0
|
|
569
|
+
? memberRanges.slice(0, rangeCount)
|
|
570
|
+
: EMPTY_ID_RANGES;
|
|
557
571
|
const expr =
|
|
558
572
|
nonOptionalMembers !== members
|
|
559
573
|
? getNonOptionalMemberChain(
|
|
@@ -562,7 +576,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
562
576
|
)
|
|
563
577
|
: expression;
|
|
564
578
|
const ids = [...settings.ids, ...nonOptionalMembers];
|
|
565
|
-
const dep = new
|
|
579
|
+
const dep = new ESMImportSpecifierDependency(
|
|
566
580
|
settings.source,
|
|
567
581
|
settings.sourceOrder,
|
|
568
582
|
ids,
|
|
@@ -601,19 +615,20 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
601
615
|
(expression, members, membersOptionals, memberRanges) => {
|
|
602
616
|
const { arguments: args } = expression;
|
|
603
617
|
const callee = /** @type {MemberExpression} */ (expression.callee);
|
|
604
|
-
const settings = /** @type {
|
|
605
|
-
parser.currentTagData
|
|
606
|
-
);
|
|
618
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
607
619
|
settings.used = true;
|
|
608
620
|
const nonOptionalMembers = getNonOptionalPart(
|
|
609
621
|
members,
|
|
610
622
|
membersOptionals
|
|
611
623
|
);
|
|
624
|
+
const rangeCount =
|
|
625
|
+
memberRanges.length - (members.length - nonOptionalMembers.length);
|
|
626
|
+
// Nothing left to record is the common case, so share one array.
|
|
612
627
|
/** @type {Range[]} */
|
|
613
|
-
const ranges =
|
|
614
|
-
0
|
|
615
|
-
|
|
616
|
-
|
|
628
|
+
const ranges =
|
|
629
|
+
rangeCount > 0
|
|
630
|
+
? memberRanges.slice(0, rangeCount)
|
|
631
|
+
: EMPTY_ID_RANGES;
|
|
617
632
|
const expr =
|
|
618
633
|
nonOptionalMembers !== members
|
|
619
634
|
? getNonOptionalMemberChain(
|
|
@@ -622,7 +637,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
622
637
|
)
|
|
623
638
|
: callee;
|
|
624
639
|
const ids = [...settings.ids, ...nonOptionalMembers];
|
|
625
|
-
const dep = new
|
|
640
|
+
const dep = new ESMImportSpecifierDependency(
|
|
626
641
|
settings.source,
|
|
627
642
|
settings.sourceOrder,
|
|
628
643
|
ids,
|
|
@@ -659,7 +674,7 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
659
674
|
parser.hooks.assignMemberChain
|
|
660
675
|
.for(harmonySpecifierTag)
|
|
661
676
|
.tap(PLUGIN_NAME, (expression, members) => {
|
|
662
|
-
const settings = /** @type {
|
|
677
|
+
const settings = /** @type {ESMSettings} */ (parser.currentTagData);
|
|
663
678
|
settings.used = true;
|
|
664
679
|
if (isNamespaceMemberWrite(settings, members)) {
|
|
665
680
|
assignmentTarget = /** @type {MemberExpression} */ (expression.left);
|
|
@@ -676,18 +691,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
676
691
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
677
692
|
getParserHooks(parser);
|
|
678
693
|
hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
679
|
-
if (!
|
|
694
|
+
if (!ESMExports.isEnabled(parser.state)) {
|
|
680
695
|
// This is not a harmony module, skip it
|
|
681
696
|
return;
|
|
682
697
|
}
|
|
683
698
|
const dependencies = requests.map((request) => {
|
|
684
|
-
const dep = new
|
|
699
|
+
const dep = new ESMAcceptImportDependency(request);
|
|
685
700
|
dep.loc = parser.getLocation(expr);
|
|
686
701
|
parser.state.module.addDependency(dep);
|
|
687
702
|
return dep;
|
|
688
703
|
});
|
|
689
704
|
if (dependencies.length > 0) {
|
|
690
|
-
const dep = new
|
|
705
|
+
const dep = new ESMAcceptDependency(
|
|
691
706
|
/** @type {Range} */
|
|
692
707
|
(expr.range),
|
|
693
708
|
dependencies,
|
|
@@ -698,18 +713,18 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
698
713
|
}
|
|
699
714
|
});
|
|
700
715
|
hotAcceptWithoutCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
701
|
-
if (!
|
|
716
|
+
if (!ESMExports.isEnabled(parser.state)) {
|
|
702
717
|
// This is not a harmony module, skip it
|
|
703
718
|
return;
|
|
704
719
|
}
|
|
705
720
|
const dependencies = requests.map((request) => {
|
|
706
|
-
const dep = new
|
|
721
|
+
const dep = new ESMAcceptImportDependency(request);
|
|
707
722
|
dep.loc = parser.getLocation(expr);
|
|
708
723
|
parser.state.module.addDependency(dep);
|
|
709
724
|
return dep;
|
|
710
725
|
});
|
|
711
726
|
if (dependencies.length > 0) {
|
|
712
|
-
const dep = new
|
|
727
|
+
const dep = new ESMAcceptDependency(
|
|
713
728
|
/** @type {Range} */
|
|
714
729
|
(expr.range),
|
|
715
730
|
dependencies,
|
|
@@ -747,6 +762,6 @@ class HarmonyImportDependencyParserPlugin {
|
|
|
747
762
|
}
|
|
748
763
|
}
|
|
749
764
|
|
|
750
|
-
|
|
765
|
+
ESMImportDependencyParserPlugin.harmonySpecifierTag = harmonySpecifierTag;
|
|
751
766
|
|
|
752
|
-
module.exports =
|
|
767
|
+
module.exports = ESMImportDependencyParserPlugin;
|
|
@@ -5,31 +5,32 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const isDependencyKind = require("../../graph/isDependencyKind");
|
|
9
|
+
const { isInlinedUsedName } = require("../../optimize/InlineExports");
|
|
9
10
|
|
|
10
11
|
/** @import { Expression } from "estree" */
|
|
11
|
-
/** @import Dependency from "
|
|
12
|
-
/** @import Module from "
|
|
13
|
-
/** @import ModuleGraph from "
|
|
14
|
-
/** @import JavascriptParser from "
|
|
15
|
-
/** @import { RuntimeSpec } from "
|
|
16
|
-
/** @import CommonJsFullRequireDependency from "
|
|
17
|
-
/** @import CommonJsRequireDependency from "
|
|
18
|
-
/** @import
|
|
19
|
-
/** @import
|
|
20
|
-
/** @import ImportDependency from "
|
|
12
|
+
/** @import Dependency from "../../graph/Dependency" */
|
|
13
|
+
/** @import Module from "../../module/Module" */
|
|
14
|
+
/** @import ModuleGraph from "../../graph/ModuleGraph" */
|
|
15
|
+
/** @import JavascriptParser from "../../javascript/JavascriptParser" */
|
|
16
|
+
/** @import { RuntimeSpec } from "../../util/runtime" */
|
|
17
|
+
/** @import CommonJsFullRequireDependency from "../commonjs/CommonJsFullRequireDependency" */
|
|
18
|
+
/** @import CommonJsRequireDependency from "../commonjs/CommonJsRequireDependency" */
|
|
19
|
+
/** @import ESMEvaluatedImportSpecifierDependency from "./ESMEvaluatedImportSpecifierDependency" */
|
|
20
|
+
/** @import ESMImportSpecifierDependency from "./ESMImportSpecifierDependency" */
|
|
21
|
+
/** @import ImportDependency from "../import/ImportDependency" */
|
|
21
22
|
|
|
22
23
|
// Tuple-encoded boolean formula over guard dependencies. Split into per-shape
|
|
23
24
|
// aliases so the recursive references resolve through array/object types.
|
|
24
25
|
// `v` = dependency-liveness atom, `p` = `"x" in ns` presence atom.
|
|
25
26
|
/** @typedef {["v", Dependency]} GuardAtom */
|
|
26
|
-
/** @typedef {["p",
|
|
27
|
+
/** @typedef {["p", ESMEvaluatedImportSpecifierDependency]} GuardPresenceAtom */
|
|
27
28
|
/** @typedef {["?"]} GuardUnknown */
|
|
28
29
|
/** @typedef {["!", GuardFormula]} GuardNot */
|
|
29
30
|
/** @typedef {["&&" | "||" | "??", GuardFormula, GuardFormula]} GuardLogical */
|
|
30
31
|
/** @typedef {GuardAtom | GuardPresenceAtom | GuardUnknown | GuardNot | GuardLogical} GuardFormula */
|
|
31
32
|
/** @typedef {{ formula: GuardFormula, value: boolean }} DependencyGuard branch guard: the dependency is live only when the formula evaluates to `value` */
|
|
32
|
-
/** @typedef {
|
|
33
|
+
/** @typedef {ESMImportSpecifierDependency | CommonJsRequireDependency | CommonJsFullRequireDependency | ImportDependency} GuardableDependency */
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
36
|
* A guard frame pushed onto `parser.state.guardStack` for the duration of one
|
|
@@ -63,7 +64,7 @@ const fromBool = (b) => (b ? TRUE : FALSE);
|
|
|
63
64
|
/**
|
|
64
65
|
* Build a liveness formula from a conditional test AST.
|
|
65
66
|
* @param {Expression} test conditional test expression
|
|
66
|
-
* @param {Map<number,
|
|
67
|
+
* @param {Map<number, ESMImportSpecifierDependency>} depByRangeStart import-specifier deps in the test, keyed by range start
|
|
67
68
|
* @returns {GuardFormula | null} formula, or null when it has no knowable atom
|
|
68
69
|
*/
|
|
69
70
|
const buildLivenessFormula = (test, depByRangeStart) => {
|
|
@@ -125,14 +126,14 @@ const hasAtom = (formula) => {
|
|
|
125
126
|
const evalLivenessFormula = (formula, moduleGraph, runtime) => {
|
|
126
127
|
switch (formula[0]) {
|
|
127
128
|
case "v": {
|
|
128
|
-
const dep = /** @type {
|
|
129
|
+
const dep = /** @type {ESMImportSpecifierDependency} */ (formula[1]);
|
|
129
130
|
const module = moduleGraph.getModule(dep);
|
|
130
131
|
if (!module) return { t: UNKNOWN, n: UNKNOWN };
|
|
131
132
|
const used = moduleGraph
|
|
132
133
|
.getExportsInfo(module)
|
|
133
134
|
.getUsedName(dep.getIds(moduleGraph), runtime);
|
|
134
135
|
// Only a bare inlined primitive is knowable; a property suffix is not.
|
|
135
|
-
if (!(used
|
|
136
|
+
if (!isInlinedUsedName(used) || used.suffix.length !== 0) {
|
|
136
137
|
return { t: UNKNOWN, n: UNKNOWN };
|
|
137
138
|
}
|
|
138
139
|
const value = used.value;
|
|
@@ -207,16 +208,14 @@ const isDeadByGuards = (guards, moduleGraph, runtime) => {
|
|
|
207
208
|
*/
|
|
208
209
|
const buildFrameLivenessFormula = (parser, frame) => {
|
|
209
210
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
210
|
-
/** @type {Map<number,
|
|
211
|
+
/** @type {Map<number, ESMImportSpecifierDependency>} */
|
|
211
212
|
const depByRangeStart = new Map();
|
|
212
213
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
213
|
-
const dep =
|
|
214
|
-
deps[i]
|
|
215
|
-
);
|
|
214
|
+
const dep = deps[i];
|
|
216
215
|
// Exclude `"x" in ns` evaluated deps; those feed the presence formula only.
|
|
217
216
|
if (
|
|
218
|
-
dep
|
|
219
|
-
dep.
|
|
217
|
+
isDependencyKind(dep, "esm-import-specifier") &&
|
|
218
|
+
!dep.is("esm-evaluated-import-specifier") &&
|
|
220
219
|
dep.range
|
|
221
220
|
) {
|
|
222
221
|
depByRangeStart.set(dep.range[0], dep);
|
|
@@ -234,7 +233,7 @@ const buildFrameLivenessFormula = (parser, frame) => {
|
|
|
234
233
|
* `"x" in ns` presence atoms (plus `&&`/`!`).
|
|
235
234
|
* @param {JavascriptParser} parser the parser
|
|
236
235
|
* @param {Expression} test conditional test expression
|
|
237
|
-
* @param {Map<number,
|
|
236
|
+
* @param {Map<number, ESMEvaluatedImportSpecifierDependency>} depByRangeStart in-operator deps in the test, keyed by range start
|
|
238
237
|
* @returns {GuardFormula | null} formula, or null when it has no presence atom
|
|
239
238
|
*/
|
|
240
239
|
const buildPresenceFormula = (parser, test, depByRangeStart) => {
|
|
@@ -299,7 +298,7 @@ const buildPresenceFormula = (parser, test, depByRangeStart) => {
|
|
|
299
298
|
const evalPresenceFormula = (formula, name, member, needTruthy) => {
|
|
300
299
|
switch (formula[0]) {
|
|
301
300
|
case "p": {
|
|
302
|
-
const dep = /** @type {
|
|
301
|
+
const dep = /** @type {ESMEvaluatedImportSpecifierDependency} */ (
|
|
303
302
|
formula[1]
|
|
304
303
|
);
|
|
305
304
|
return (
|
|
@@ -332,13 +331,11 @@ const evalPresenceFormula = (formula, name, member, needTruthy) => {
|
|
|
332
331
|
*/
|
|
333
332
|
const buildFramePresenceFormula = (parser, frame) => {
|
|
334
333
|
const deps = /** @type {Module} */ (parser.state.module).dependencies;
|
|
335
|
-
/** @type {Map<number,
|
|
334
|
+
/** @type {Map<number, ESMEvaluatedImportSpecifierDependency>} */
|
|
336
335
|
const depByRangeStart = new Map();
|
|
337
336
|
for (let i = /** @type {number} */ (frame.depStart); i < deps.length; i++) {
|
|
338
|
-
const dep =
|
|
339
|
-
|
|
340
|
-
);
|
|
341
|
-
if (dep.isHarmonyEvaluatedImportSpecifier === true && dep.range) {
|
|
337
|
+
const dep = deps[i];
|
|
338
|
+
if (isDependencyKind(dep, "esm-evaluated-import-specifier") && dep.range) {
|
|
342
339
|
depByRangeStart.set(dep.range[0], dep);
|
|
343
340
|
}
|
|
344
341
|
}
|