@depup/webpack 5.106.0-depup.0 → 5.109.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 +9 -11
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +498 -127
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +15 -0
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +104 -26
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +29 -3
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +43 -7
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +591 -41
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +12 -26
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +682 -368
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +25 -2
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +54 -6
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +663 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +97 -6
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1117 -79
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +8608 -1159
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -8,11 +8,17 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const InitFragment = require("../InitFragment");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const {
|
|
12
|
+
InlinedUsedName,
|
|
13
|
+
isExportInlined,
|
|
14
|
+
isInlineExportsEnabled
|
|
15
|
+
} = require("../optimize/InlineExports");
|
|
11
16
|
const {
|
|
12
17
|
getDependencyUsedByExportsCondition
|
|
13
18
|
} = require("../optimize/InnerGraph");
|
|
14
19
|
const { getTrimmedIdsAndRange } = require("../util/chainedImports");
|
|
15
20
|
const makeSerializable = require("../util/makeSerializable");
|
|
21
|
+
const memoize = require("../util/memoize");
|
|
16
22
|
const { propertyAccess } = require("../util/property");
|
|
17
23
|
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
18
24
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
@@ -27,7 +33,7 @@ const { ImportPhaseUtils } = require("./ImportPhase");
|
|
|
27
33
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
28
34
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
29
35
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
30
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
36
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
31
37
|
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
|
|
32
38
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
33
39
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
@@ -39,6 +45,10 @@ const { ImportPhaseUtils } = require("./ImportPhase");
|
|
|
39
45
|
/** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
|
|
40
46
|
/** @typedef {HarmonyImportDependency.Ids} Ids */
|
|
41
47
|
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
48
|
+
/** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
|
|
49
|
+
/** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
|
|
50
|
+
|
|
51
|
+
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
42
52
|
|
|
43
53
|
const idsSymbol = /** @type {symbol} */ (
|
|
44
54
|
Symbol("HarmonyImportSpecifierDependency.ids")
|
|
@@ -48,6 +58,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
|
|
|
48
58
|
|
|
49
59
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
50
60
|
/**
|
|
61
|
+
* Creates an instance of HarmonyImportSpecifierDependency.
|
|
51
62
|
* @param {string} request request
|
|
52
63
|
* @param {number} sourceOrder source order
|
|
53
64
|
* @param {Ids} ids ids
|
|
@@ -70,10 +81,14 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
70
81
|
idRanges // TODO webpack 6 make this non-optional. It must always be set to properly trim ids.
|
|
71
82
|
) {
|
|
72
83
|
super(request, sourceOrder, phase, attributes);
|
|
84
|
+
/** @type {Ids} */
|
|
73
85
|
this.ids = ids;
|
|
86
|
+
/** @type {string} */
|
|
74
87
|
this.name = name;
|
|
75
88
|
this.range = range;
|
|
89
|
+
/** @type {IdRanges | undefined} */
|
|
76
90
|
this.idRanges = idRanges;
|
|
91
|
+
/** @type {ExportPresenceMode} */
|
|
77
92
|
this.exportPresenceMode = exportPresenceMode;
|
|
78
93
|
/** @type {undefined | boolean} */
|
|
79
94
|
this.namespaceObjectAsContext = false;
|
|
@@ -89,10 +104,13 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
89
104
|
this.usedByExports = undefined;
|
|
90
105
|
/** @type {DestructuringAssignmentProperties | undefined} */
|
|
91
106
|
this.referencedPropertiesInDestructuring = undefined;
|
|
107
|
+
/** @type {DependencyGuard[] | undefined} */
|
|
108
|
+
this.branchGuards = undefined;
|
|
92
109
|
}
|
|
93
110
|
|
|
94
111
|
// TODO webpack 6 remove
|
|
95
112
|
/**
|
|
113
|
+
* Returns id.
|
|
96
114
|
* @deprecated
|
|
97
115
|
*/
|
|
98
116
|
get id() {
|
|
@@ -101,6 +119,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
101
119
|
|
|
102
120
|
// TODO webpack 6 remove
|
|
103
121
|
/**
|
|
122
|
+
* Returns id.
|
|
104
123
|
* @deprecated
|
|
105
124
|
*/
|
|
106
125
|
getId() {
|
|
@@ -109,6 +128,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
109
128
|
|
|
110
129
|
// TODO webpack 6 remove
|
|
111
130
|
/**
|
|
131
|
+
* Updates id.
|
|
112
132
|
* @deprecated
|
|
113
133
|
*/
|
|
114
134
|
setId() {
|
|
@@ -120,6 +140,15 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
120
140
|
}
|
|
121
141
|
|
|
122
142
|
/**
|
|
143
|
+
* Returns the export name this dependency requests from its target module (lazy barrel optimization).
|
|
144
|
+
* @returns {string | true | null} export name, true for all exports, null for none
|
|
145
|
+
*/
|
|
146
|
+
getForwardId() {
|
|
147
|
+
return this.ids.length > 0 ? this.ids[0] : true;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Returns the imported ids.
|
|
123
152
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
124
153
|
* @returns {Ids} the imported ids
|
|
125
154
|
*/
|
|
@@ -131,6 +160,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
131
160
|
}
|
|
132
161
|
|
|
133
162
|
/**
|
|
163
|
+
* Updates ids using the provided module graph.
|
|
134
164
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
135
165
|
* @param {Ids} ids the imported ids
|
|
136
166
|
* @returns {void}
|
|
@@ -140,18 +170,50 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
140
170
|
}
|
|
141
171
|
|
|
142
172
|
/**
|
|
173
|
+
* Returns function to determine if the connection is active.
|
|
143
174
|
* @param {ModuleGraph} moduleGraph module graph
|
|
144
175
|
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
145
176
|
*/
|
|
146
177
|
getCondition(moduleGraph) {
|
|
147
|
-
|
|
178
|
+
const usedByExportsCondition = getDependencyUsedByExportsCondition(
|
|
148
179
|
this,
|
|
149
|
-
this.usedByExports,
|
|
150
180
|
moduleGraph
|
|
151
181
|
);
|
|
182
|
+
if (usedByExportsCondition === false) return false;
|
|
183
|
+
// Keep the connection unconditional (fast path) when nothing can deactivate it
|
|
184
|
+
if (
|
|
185
|
+
usedByExportsCondition === null &&
|
|
186
|
+
this.branchGuards === undefined &&
|
|
187
|
+
!isInlineExportsEnabled(moduleGraph)
|
|
188
|
+
) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
const dep = this;
|
|
192
|
+
return (connection, runtime) => {
|
|
193
|
+
if (usedByExportsCondition !== null) {
|
|
194
|
+
const result = usedByExportsCondition(connection, runtime);
|
|
195
|
+
if (result === false) return false;
|
|
196
|
+
}
|
|
197
|
+
const ids = dep.getIds(moduleGraph);
|
|
198
|
+
if (
|
|
199
|
+
ids.length > 0 &&
|
|
200
|
+
isExportInlined(moduleGraph, connection.module, ids, runtime)
|
|
201
|
+
) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
const guards = dep.branchGuards;
|
|
205
|
+
if (
|
|
206
|
+
guards !== undefined &&
|
|
207
|
+
getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime)
|
|
208
|
+
) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
return true;
|
|
212
|
+
};
|
|
152
213
|
}
|
|
153
214
|
|
|
154
215
|
/**
|
|
216
|
+
* Gets module evaluation side effects state.
|
|
155
217
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
156
218
|
* @returns {ConnectionState} how this dependency connects the module to referencing modules
|
|
157
219
|
*/
|
|
@@ -167,7 +229,16 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
167
229
|
*/
|
|
168
230
|
getReferencedExports(moduleGraph, runtime) {
|
|
169
231
|
let ids = this.getIds(moduleGraph);
|
|
170
|
-
if (ids.length === 0)
|
|
232
|
+
if (ids.length === 0) {
|
|
233
|
+
const refs = this._getReferencedExportsInDestructuring();
|
|
234
|
+
// The whole namespace object is used as a value (no destructuring): it
|
|
235
|
+
// can be rendered as a decoupled namespace object, keeping the module's
|
|
236
|
+
// exports mangleable. Deferred imports keep their special namespace.
|
|
237
|
+
return refs === Dependency.EXPORTS_OBJECT_REFERENCED &&
|
|
238
|
+
!ImportPhaseUtils.isDefer(this.phase)
|
|
239
|
+
? Dependency.EXPORTS_OBJECT_REFERENCED_MANGLEABLE
|
|
240
|
+
: refs;
|
|
241
|
+
}
|
|
171
242
|
let namespaceObjectAsContext = this.namespaceObjectAsContext;
|
|
172
243
|
if (ids[0] === "default") {
|
|
173
244
|
const selfModule =
|
|
@@ -209,8 +280,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
209
280
|
}
|
|
210
281
|
|
|
211
282
|
/**
|
|
283
|
+
* Get referenced exports in destructuring.
|
|
212
284
|
* @param {Ids=} ids ids
|
|
213
|
-
* @returns {
|
|
285
|
+
* @returns {ReferencedExports} referenced exports
|
|
214
286
|
*/
|
|
215
287
|
_getReferencedExportsInDestructuring(ids) {
|
|
216
288
|
if (this.referencedPropertiesInDestructuring) {
|
|
@@ -220,17 +292,31 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
220
292
|
this.referencedPropertiesInDestructuring,
|
|
221
293
|
(stack) => refsInDestructuring.push(stack.map((p) => p.id))
|
|
222
294
|
);
|
|
223
|
-
/** @type {
|
|
295
|
+
/** @type {ReferencedExports} */
|
|
224
296
|
const refs = [];
|
|
225
297
|
for (const idsInDestructuring of refsInDestructuring) {
|
|
226
|
-
|
|
298
|
+
// Destructuring consumer can't accept an inlined literal
|
|
299
|
+
refs.push({
|
|
300
|
+
name: ids ? [...ids, ...idsInDestructuring] : idsInDestructuring,
|
|
301
|
+
canInline: false
|
|
302
|
+
});
|
|
227
303
|
}
|
|
228
304
|
return refs;
|
|
229
305
|
}
|
|
230
|
-
return ids
|
|
306
|
+
return ids
|
|
307
|
+
? [
|
|
308
|
+
{
|
|
309
|
+
name: ids,
|
|
310
|
+
canMangle: true,
|
|
311
|
+
// Need access the export value to trigger side effects for deferred module
|
|
312
|
+
canInline: !ImportPhaseUtils.isDefer(this.phase)
|
|
313
|
+
}
|
|
314
|
+
]
|
|
315
|
+
: Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
231
316
|
}
|
|
232
317
|
|
|
233
318
|
/**
|
|
319
|
+
* Get effective export presence level.
|
|
234
320
|
* @param {ModuleGraph} moduleGraph module graph
|
|
235
321
|
* @returns {ExportPresenceMode} effective mode
|
|
236
322
|
*/
|
|
@@ -239,7 +325,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
239
325
|
return this.exportPresenceMode;
|
|
240
326
|
}
|
|
241
327
|
const buildMeta =
|
|
242
|
-
/** @type {
|
|
328
|
+
/** @type {JavascriptModuleBuildMeta} */
|
|
243
329
|
(
|
|
244
330
|
/** @type {Module} */
|
|
245
331
|
(moduleGraph.getParentModule(this)).buildMeta
|
|
@@ -250,7 +336,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
250
336
|
}
|
|
251
337
|
|
|
252
338
|
/**
|
|
253
|
-
* Returns warnings
|
|
339
|
+
* Returns warnings.
|
|
254
340
|
* @param {ModuleGraph} moduleGraph module graph
|
|
255
341
|
* @returns {WebpackError[] | null | undefined} warnings
|
|
256
342
|
*/
|
|
@@ -263,7 +349,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
263
349
|
}
|
|
264
350
|
|
|
265
351
|
/**
|
|
266
|
-
* Returns errors
|
|
352
|
+
* Returns errors.
|
|
267
353
|
* @param {ModuleGraph} moduleGraph module graph
|
|
268
354
|
* @returns {WebpackError[] | null | undefined} errors
|
|
269
355
|
*/
|
|
@@ -276,6 +362,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
276
362
|
}
|
|
277
363
|
|
|
278
364
|
/**
|
|
365
|
+
* Returns errors.
|
|
279
366
|
* @param {ModuleGraph} moduleGraph module graph
|
|
280
367
|
* @returns {WebpackError[] | undefined} errors
|
|
281
368
|
*/
|
|
@@ -297,6 +384,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
297
384
|
}
|
|
298
385
|
|
|
299
386
|
/**
|
|
387
|
+
* Serializes this instance into the provided serializer context.
|
|
300
388
|
* @param {ObjectSerializerContext} context context
|
|
301
389
|
*/
|
|
302
390
|
serialize(context) {
|
|
@@ -313,10 +401,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
313
401
|
write(this.asiSafe);
|
|
314
402
|
write(this.usedByExports);
|
|
315
403
|
write(this.referencedPropertiesInDestructuring);
|
|
404
|
+
write(this.branchGuards);
|
|
316
405
|
super.serialize(context);
|
|
317
406
|
}
|
|
318
407
|
|
|
319
408
|
/**
|
|
409
|
+
* Restores this instance from the provided deserializer context.
|
|
320
410
|
* @param {ObjectDeserializerContext} context context
|
|
321
411
|
*/
|
|
322
412
|
deserialize(context) {
|
|
@@ -333,6 +423,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
333
423
|
this.asiSafe = read();
|
|
334
424
|
this.usedByExports = read();
|
|
335
425
|
this.referencedPropertiesInDestructuring = read();
|
|
426
|
+
this.branchGuards = read();
|
|
336
427
|
super.deserialize(context);
|
|
337
428
|
}
|
|
338
429
|
}
|
|
@@ -346,6 +437,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
346
437
|
HarmonyImportDependency.Template
|
|
347
438
|
) {
|
|
348
439
|
/**
|
|
440
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
349
441
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
350
442
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
351
443
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -355,9 +447,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
355
447
|
const dep = /** @type {HarmonyImportSpecifierDependency} */ (dependency);
|
|
356
448
|
const { moduleGraph, runtime, initFragments } = templateContext;
|
|
357
449
|
const connection = moduleGraph.getConnection(dep);
|
|
450
|
+
const ids = dep.getIds(moduleGraph);
|
|
358
451
|
|
|
359
|
-
|
|
360
|
-
|
|
452
|
+
if (
|
|
453
|
+
connection &&
|
|
454
|
+
!connection.isTargetActive(runtime) &&
|
|
455
|
+
!isExportInlined(moduleGraph, connection.module, ids, runtime)
|
|
456
|
+
) {
|
|
361
457
|
initFragments.push(
|
|
362
458
|
new InitFragment(
|
|
363
459
|
`/* unused harmony import specifier */ var ${dep.name};\n`,
|
|
@@ -370,7 +466,6 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
370
466
|
return;
|
|
371
467
|
}
|
|
372
468
|
|
|
373
|
-
const ids = dep.getIds(moduleGraph);
|
|
374
469
|
const {
|
|
375
470
|
trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
|
|
376
471
|
trimmedIds
|
|
@@ -433,7 +528,16 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
433
528
|
const used = moduleGraph
|
|
434
529
|
.getExportsInfo(module)
|
|
435
530
|
.getUsedName(concatedIds, runtime);
|
|
436
|
-
if (!used)
|
|
531
|
+
if (!used) {
|
|
532
|
+
return;
|
|
533
|
+
} else if (used instanceof InlinedUsedName) {
|
|
534
|
+
throw new Error(
|
|
535
|
+
`Should not inline for destructuring name ${concatedIds.join(".")}`
|
|
536
|
+
);
|
|
537
|
+
}
|
|
538
|
+
// Destructuring can't consume an inlined literal — should be unreachable
|
|
539
|
+
// because the consumer-side canInline=false suppresses inlining there.
|
|
540
|
+
if (!Array.isArray(used)) continue;
|
|
437
541
|
const newName = used[used.length - 1];
|
|
438
542
|
const name = concatedIds[concatedIds.length - 1];
|
|
439
543
|
if (newName === name) continue;
|
|
@@ -450,6 +554,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
450
554
|
}
|
|
451
555
|
|
|
452
556
|
/**
|
|
557
|
+
* Returns generated code.
|
|
453
558
|
* @param {HarmonyImportSpecifierDependency} dep dependency
|
|
454
559
|
* @param {ReplaceSource} source source
|
|
455
560
|
* @param {DependencyTemplateContext} templateContext context
|
|
@@ -462,6 +567,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
462
567
|
const connection = moduleGraph.getConnection(dep);
|
|
463
568
|
/** @type {string} */
|
|
464
569
|
let exportExpr;
|
|
570
|
+
|
|
465
571
|
if (
|
|
466
572
|
connection &&
|
|
467
573
|
concatenationScope &&
|
|
@@ -472,7 +578,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
472
578
|
connection.module,
|
|
473
579
|
{
|
|
474
580
|
asiSafe: dep.asiSafe,
|
|
475
|
-
deferredImport: ImportPhaseUtils.isDefer(dep.phase)
|
|
581
|
+
deferredImport: ImportPhaseUtils.isDefer(dep.phase),
|
|
582
|
+
// A bare namespace value that isn't destructured may escape, so
|
|
583
|
+
// allow a decoupled namespace object that keeps the original names.
|
|
584
|
+
// Deferred imports keep their special namespace object.
|
|
585
|
+
mangleableNamespace:
|
|
586
|
+
!dep.referencedPropertiesInDestructuring &&
|
|
587
|
+
!ImportPhaseUtils.isDefer(dep.phase)
|
|
476
588
|
}
|
|
477
589
|
);
|
|
478
590
|
} else if (dep.namespaceObjectAsContext && ids.length === 1) {
|
|
@@ -514,7 +626,14 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
514
626
|
initFragments,
|
|
515
627
|
runtime,
|
|
516
628
|
runtimeRequirements,
|
|
517
|
-
dependency: dep
|
|
629
|
+
dependency: dep,
|
|
630
|
+
// A bare namespace value that isn't destructured may escape, so allow a
|
|
631
|
+
// decoupled namespace object that keeps the original export names.
|
|
632
|
+
// Deferred imports keep their special namespace object.
|
|
633
|
+
mangleableNamespace:
|
|
634
|
+
ids.length === 0 &&
|
|
635
|
+
!dep.referencedPropertiesInDestructuring &&
|
|
636
|
+
!ImportPhaseUtils.isDefer(dep.phase)
|
|
518
637
|
});
|
|
519
638
|
}
|
|
520
639
|
return exportExpr;
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const WebpackError = require("
|
|
7
|
+
const WebpackError = require("../errors/WebpackError");
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
class HarmonyLinkingError extends WebpackError {
|
|
10
10
|
/** @param {string} message Error message */
|
|
11
11
|
constructor(message) {
|
|
12
12
|
super(message);
|
|
13
13
|
/** @type {string} */
|
|
14
14
|
this.name = "HarmonyLinkingError";
|
|
15
|
+
/** @type {boolean} */
|
|
15
16
|
this.hideStack = true;
|
|
16
17
|
}
|
|
17
|
-
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = HarmonyLinkingError;
|
|
@@ -25,12 +25,14 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
|
|
|
25
25
|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
26
26
|
|
|
27
27
|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
|
28
|
+
const TopLevelAwaitDependency = require("./TopLevelAwaitDependency");
|
|
28
29
|
|
|
29
30
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
30
31
|
/** @typedef {import("../Compiler")} Compiler */
|
|
31
32
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
|
32
33
|
|
|
33
34
|
/**
|
|
35
|
+
* Defines the harmony modules plugin options type used by this module.
|
|
34
36
|
* @typedef {object} HarmonyModulesPluginOptions
|
|
35
37
|
* @property {boolean=} deferImport
|
|
36
38
|
*/
|
|
@@ -39,14 +41,16 @@ const PLUGIN_NAME = "HarmonyModulesPlugin";
|
|
|
39
41
|
|
|
40
42
|
class HarmonyModulesPlugin {
|
|
41
43
|
/**
|
|
44
|
+
* Creates an instance of HarmonyModulesPlugin.
|
|
42
45
|
* @param {HarmonyModulesPluginOptions} options options
|
|
43
46
|
*/
|
|
44
47
|
constructor(options) {
|
|
48
|
+
/** @type {HarmonyModulesPluginOptions} */
|
|
45
49
|
this.options = options;
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
/**
|
|
49
|
-
*
|
|
53
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
50
54
|
* @param {Compiler} compiler the compiler instance
|
|
51
55
|
* @returns {void}
|
|
52
56
|
*/
|
|
@@ -59,6 +63,11 @@ class HarmonyModulesPlugin {
|
|
|
59
63
|
new HarmonyCompatibilityDependency.Template()
|
|
60
64
|
);
|
|
61
65
|
|
|
66
|
+
compilation.dependencyTemplates.set(
|
|
67
|
+
TopLevelAwaitDependency,
|
|
68
|
+
new TopLevelAwaitDependency.Template()
|
|
69
|
+
);
|
|
70
|
+
|
|
62
71
|
compilation.dependencyFactories.set(
|
|
63
72
|
HarmonyImportSideEffectDependency,
|
|
64
73
|
normalModuleFactory
|
|
@@ -125,6 +134,7 @@ class HarmonyModulesPlugin {
|
|
|
125
134
|
);
|
|
126
135
|
|
|
127
136
|
/**
|
|
137
|
+
* Handles the hook callback for this code path.
|
|
128
138
|
* @param {Parser} parser parser parser
|
|
129
139
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
|
130
140
|
* @returns {void}
|
|
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
|
|
|
16
16
|
|
|
17
17
|
class HarmonyTopLevelThisParserPlugin {
|
|
18
18
|
/**
|
|
19
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
19
20
|
* @param {JavascriptParser} parser the parser
|
|
20
21
|
* @returns {void}
|
|
21
22
|
*/
|
|
@@ -28,7 +29,7 @@ class HarmonyTopLevelThisParserPlugin {
|
|
|
28
29
|
/** @type {Range} */ (node.range),
|
|
29
30
|
null
|
|
30
31
|
);
|
|
31
|
-
dep.loc =
|
|
32
|
+
dep.loc = parser.getLocation(node);
|
|
32
33
|
parser.state.module.addPresentationalDependency(dep);
|
|
33
34
|
return true;
|
|
34
35
|
}
|