@depup/webpack 5.106.1-depup.0 → 5.109.2-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/bin/webpack.js +12 -0
- 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 +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- 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 +537 -139
- 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 +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- 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 +33 -30
- 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 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- 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 +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- 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 +123 -118
- 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 +52 -6
- 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 +302 -12
- 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 +612 -43
- 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/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- 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 +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -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 +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -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 +681 -367
- 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 +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- 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 +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- 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 +80 -52
- 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 +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -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 +49 -12
- 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 +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -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 +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- 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 +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- 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 +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- 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 +200 -50
- 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 +687 -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 +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- 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 +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- 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 +118 -7
- 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 +1173 -80
- 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 +11053 -3019
- 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
|
@@ -7,29 +7,76 @@
|
|
|
7
7
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
|
+
const memoize = require("../util/memoize");
|
|
11
|
+
const {
|
|
12
|
+
ESM_MODULE_EXPORTS_NAME,
|
|
13
|
+
getRequireEsmModuleExportsAccess,
|
|
14
|
+
isRequireEsmModuleExportsModule
|
|
15
|
+
} = require("./CommonJsDependencyHelpers");
|
|
10
16
|
const ModuleDependency = require("./ModuleDependency");
|
|
11
|
-
const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
|
|
12
17
|
|
|
18
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
19
|
+
/** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
|
|
13
20
|
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
14
21
|
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
22
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
23
|
+
/** @typedef {import("../Module")} Module */
|
|
15
24
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
16
25
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
19
26
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
27
|
+
/** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
|
|
28
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectDeserializerContext */
|
|
29
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectSerializerContext */
|
|
30
|
+
|
|
31
|
+
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Trims a member-access path at the first segment that is definitively not a
|
|
35
|
+
* provided export of the module. Such a segment is a runtime property (e.g. an
|
|
36
|
+
* array/object prototype method like `arr.includes`), so only the value up to
|
|
37
|
+
* that point is observed; referencing the whole value keeps its data intact
|
|
38
|
+
* instead of tree-shaking it away. Real named exports (`utils.foo`) are kept.
|
|
39
|
+
* @param {import("../ExportsInfo")} exportsInfo module exports info
|
|
40
|
+
* @param {string[]} name member-access path
|
|
41
|
+
* @returns {string[]} the provided prefix of the path
|
|
42
|
+
*/
|
|
43
|
+
const trimToProvidedPrefix = (exportsInfo, name) => {
|
|
44
|
+
let current = exportsInfo;
|
|
45
|
+
for (let i = 0; i < name.length; i++) {
|
|
46
|
+
const exportInfo = current.getReadOnlyExportInfo(name[i]);
|
|
47
|
+
if (exportInfo.provided === false) return name.slice(0, i);
|
|
48
|
+
const nested = exportInfo.exportsInfo;
|
|
49
|
+
if (!nested) return name;
|
|
50
|
+
current = nested;
|
|
51
|
+
}
|
|
52
|
+
return name;
|
|
53
|
+
};
|
|
20
54
|
|
|
21
55
|
class CommonJsRequireDependency extends ModuleDependency {
|
|
22
56
|
/**
|
|
57
|
+
* Creates an instance of CommonJsRequireDependency.
|
|
23
58
|
* @param {string} request request
|
|
24
|
-
* @param {Range=} range location in source code
|
|
59
|
+
* @param {Range=} range location in source code of the string-literal argument (gets replaced by the module id)
|
|
25
60
|
* @param {string=} context request context
|
|
26
61
|
* @param {RawReferencedExports | null=} referencedExports list of referenced exports
|
|
62
|
+
* @param {Range=} valueRange location in source code of the whole `require(...)` call (for `require(esm)` interop)
|
|
27
63
|
*/
|
|
28
|
-
constructor(
|
|
64
|
+
constructor(
|
|
65
|
+
request,
|
|
66
|
+
range,
|
|
67
|
+
context,
|
|
68
|
+
referencedExports = null,
|
|
69
|
+
valueRange = undefined
|
|
70
|
+
) {
|
|
29
71
|
super(request);
|
|
30
72
|
this.range = range;
|
|
73
|
+
/** @type {string | undefined} */
|
|
31
74
|
this._context = context;
|
|
75
|
+
/** @type {RawReferencedExports | null} */
|
|
32
76
|
this.referencedExports = referencedExports;
|
|
77
|
+
this.valueRange = valueRange;
|
|
78
|
+
/** @type {DependencyGuard[] | undefined} */
|
|
79
|
+
this.branchGuards = undefined;
|
|
33
80
|
}
|
|
34
81
|
|
|
35
82
|
get type() {
|
|
@@ -40,6 +87,18 @@ class CommonJsRequireDependency extends ModuleDependency {
|
|
|
40
87
|
return "commonjs";
|
|
41
88
|
}
|
|
42
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Returns function to determine if the connection is active.
|
|
92
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
93
|
+
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
94
|
+
*/
|
|
95
|
+
getCondition(moduleGraph) {
|
|
96
|
+
const guards = this.branchGuards;
|
|
97
|
+
if (guards === undefined) return null;
|
|
98
|
+
return (connection, runtime) =>
|
|
99
|
+
!getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
|
|
100
|
+
}
|
|
101
|
+
|
|
43
102
|
/**
|
|
44
103
|
* Returns list of exports referenced by this dependency
|
|
45
104
|
* @param {ModuleGraph} moduleGraph module graph
|
|
@@ -47,33 +106,96 @@ class CommonJsRequireDependency extends ModuleDependency {
|
|
|
47
106
|
* @returns {ReferencedExports} referenced exports
|
|
48
107
|
*/
|
|
49
108
|
getReferencedExports(moduleGraph, runtime) {
|
|
109
|
+
const importedModule = moduleGraph.getModule(this);
|
|
110
|
+
if (
|
|
111
|
+
importedModule &&
|
|
112
|
+
isRequireEsmModuleExportsModule(importedModule, moduleGraph)
|
|
113
|
+
) {
|
|
114
|
+
// `require(esm)` will unwrap the "module.exports" named export; only
|
|
115
|
+
// that export is observable through this `require()` call.
|
|
116
|
+
return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
|
|
117
|
+
}
|
|
50
118
|
if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
119
|
+
const exportsInfo = importedModule
|
|
120
|
+
? moduleGraph.getExportsInfo(importedModule)
|
|
121
|
+
: undefined;
|
|
51
122
|
return this.referencedExports.map((name) => ({
|
|
52
|
-
name,
|
|
53
|
-
canMangle: false
|
|
123
|
+
name: exportsInfo ? trimToProvidedPrefix(exportsInfo, name) : name,
|
|
124
|
+
canMangle: false,
|
|
125
|
+
canInline: false
|
|
54
126
|
}));
|
|
55
127
|
}
|
|
56
128
|
|
|
57
129
|
/**
|
|
130
|
+
* Serializes this instance into the provided serializer context.
|
|
58
131
|
* @param {ObjectSerializerContext} context context
|
|
59
132
|
*/
|
|
60
133
|
serialize(context) {
|
|
61
|
-
|
|
62
|
-
|
|
134
|
+
context
|
|
135
|
+
.write(this.referencedExports)
|
|
136
|
+
.write(this.valueRange)
|
|
137
|
+
.write(this.branchGuards);
|
|
63
138
|
super.serialize(context);
|
|
64
139
|
}
|
|
65
140
|
|
|
66
141
|
/**
|
|
142
|
+
* Restores this instance from the provided deserializer context.
|
|
67
143
|
* @param {ObjectDeserializerContext} context context
|
|
68
144
|
*/
|
|
69
145
|
deserialize(context) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
146
|
+
this.referencedExports = context.read();
|
|
147
|
+
const c1 = context.rest;
|
|
148
|
+
this.valueRange = c1.read();
|
|
149
|
+
const c2 = c1.rest;
|
|
150
|
+
this.branchGuards = c2.read();
|
|
151
|
+
super.deserialize(c2.rest);
|
|
73
152
|
}
|
|
74
153
|
}
|
|
75
154
|
|
|
76
|
-
CommonJsRequireDependency.Template =
|
|
155
|
+
CommonJsRequireDependency.Template = class CommonJsRequireDependencyTemplate extends (
|
|
156
|
+
ModuleDependency.Template
|
|
157
|
+
) {
|
|
158
|
+
/**
|
|
159
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
160
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
161
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
|
162
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
|
163
|
+
* @returns {void}
|
|
164
|
+
*/
|
|
165
|
+
apply(
|
|
166
|
+
dependency,
|
|
167
|
+
source,
|
|
168
|
+
{ runtimeTemplate, moduleGraph, chunkGraph, runtime }
|
|
169
|
+
) {
|
|
170
|
+
const dep = /** @type {CommonJsRequireDependency} */ (dependency);
|
|
171
|
+
if (!dep.range) return;
|
|
172
|
+
const connection = moduleGraph.getConnection(dep);
|
|
173
|
+
// Dead branch: module is excluded and has no id; code is never executed.
|
|
174
|
+
if (connection && !connection.isTargetActive(runtime)) {
|
|
175
|
+
source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
|
|
179
|
+
const content = runtimeTemplate.moduleId({
|
|
180
|
+
module: importedModule,
|
|
181
|
+
chunkGraph,
|
|
182
|
+
request: dep.request,
|
|
183
|
+
weak: dep.weak
|
|
184
|
+
});
|
|
185
|
+
source.replace(dep.range[0], dep.range[1] - 1, content);
|
|
186
|
+
|
|
187
|
+
if (dep.valueRange && importedModule) {
|
|
188
|
+
const access = getRequireEsmModuleExportsAccess(
|
|
189
|
+
importedModule,
|
|
190
|
+
moduleGraph,
|
|
191
|
+
runtime
|
|
192
|
+
);
|
|
193
|
+
if (access !== null) {
|
|
194
|
+
source.insert(dep.valueRange[1], access);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
};
|
|
77
199
|
|
|
78
200
|
makeSerializable(
|
|
79
201
|
CommonJsRequireDependency,
|
|
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const { equals } = require("../util/ArrayHelpers");
|
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
11
|
const { propertyAccess } = require("../util/property");
|
|
12
|
+
const { getConcatenatedExportAccess } = require("./CommonJsDependencyHelpers");
|
|
12
13
|
const NullDependency = require("./NullDependency");
|
|
13
14
|
|
|
14
15
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
@@ -18,13 +19,14 @@ const NullDependency = require("./NullDependency");
|
|
|
18
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
19
20
|
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
20
21
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
21
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
22
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
23
22
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
24
23
|
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
|
24
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectDeserializerContext */
|
|
25
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectSerializerContext */
|
|
25
26
|
|
|
26
27
|
class CommonJsSelfReferenceDependency extends NullDependency {
|
|
27
28
|
/**
|
|
29
|
+
* Creates an instance of CommonJsSelfReferenceDependency.
|
|
28
30
|
* @param {Range} range range
|
|
29
31
|
* @param {CommonJSDependencyBaseKeywords} base base
|
|
30
32
|
* @param {ExportInfoName[]} names names
|
|
@@ -33,8 +35,11 @@ class CommonJsSelfReferenceDependency extends NullDependency {
|
|
|
33
35
|
constructor(range, base, names, call) {
|
|
34
36
|
super();
|
|
35
37
|
this.range = range;
|
|
38
|
+
/** @type {CommonJSDependencyBaseKeywords} */
|
|
36
39
|
this.base = base;
|
|
40
|
+
/** @type {string[]} */
|
|
37
41
|
this.names = names;
|
|
42
|
+
/** @type {boolean} */
|
|
38
43
|
this.call = call;
|
|
39
44
|
}
|
|
40
45
|
|
|
@@ -47,6 +52,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
|
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
/**
|
|
55
|
+
* Returns an identifier to merge equal requests.
|
|
50
56
|
* @returns {string | null} an identifier to merge equal requests
|
|
51
57
|
*/
|
|
52
58
|
getResourceIdentifier() {
|
|
@@ -64,27 +70,31 @@ class CommonJsSelfReferenceDependency extends NullDependency {
|
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
/**
|
|
73
|
+
* Serializes this instance into the provided serializer context.
|
|
67
74
|
* @param {ObjectSerializerContext} context context
|
|
68
75
|
*/
|
|
69
76
|
serialize(context) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
context
|
|
78
|
+
.write(this.range)
|
|
79
|
+
.write(this.base)
|
|
80
|
+
.write(this.names)
|
|
81
|
+
.write(this.call);
|
|
75
82
|
super.serialize(context);
|
|
76
83
|
}
|
|
77
84
|
|
|
78
85
|
/**
|
|
86
|
+
* Restores this instance from the provided deserializer context.
|
|
79
87
|
* @param {ObjectDeserializerContext} context context
|
|
80
88
|
*/
|
|
81
89
|
deserialize(context) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.base = read();
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
90
|
+
this.range = context.read();
|
|
91
|
+
const c1 = context.rest;
|
|
92
|
+
this.base = c1.read();
|
|
93
|
+
const c2 = c1.rest;
|
|
94
|
+
this.names = c2.read();
|
|
95
|
+
const c3 = c2.rest;
|
|
96
|
+
this.call = c3.read();
|
|
97
|
+
super.deserialize(c3.rest);
|
|
88
98
|
}
|
|
89
99
|
}
|
|
90
100
|
|
|
@@ -97,6 +107,7 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
|
|
97
107
|
NullDependency.Template
|
|
98
108
|
) {
|
|
99
109
|
/**
|
|
110
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
100
111
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
101
112
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
102
113
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -105,19 +116,52 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
|
|
105
116
|
apply(
|
|
106
117
|
dependency,
|
|
107
118
|
source,
|
|
108
|
-
{
|
|
119
|
+
{
|
|
120
|
+
module,
|
|
121
|
+
moduleGraph,
|
|
122
|
+
runtime,
|
|
123
|
+
runtimeRequirements,
|
|
124
|
+
initFragments,
|
|
125
|
+
concatenationScope
|
|
126
|
+
}
|
|
109
127
|
) {
|
|
110
128
|
const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
|
|
129
|
+
// CJS exports are never inlined
|
|
111
130
|
const used =
|
|
112
131
|
dep.names.length === 0
|
|
113
132
|
? dep.names
|
|
114
|
-
:
|
|
133
|
+
: /** @type {string | string[] | false} */ (
|
|
134
|
+
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
135
|
+
);
|
|
115
136
|
if (!used) {
|
|
116
137
|
throw new Error(
|
|
117
138
|
"Self-reference dependency has unused export name: This should not happen"
|
|
118
139
|
);
|
|
119
140
|
}
|
|
120
141
|
|
|
142
|
+
if (concatenationScope) {
|
|
143
|
+
// eligibility (non-empty names, exports/module.exports base) is enforced
|
|
144
|
+
// by JavascriptGenerator.getConcatenationBailoutReason
|
|
145
|
+
if (
|
|
146
|
+
dep.names.length === 0 ||
|
|
147
|
+
(dep.base !== "exports" && dep.base !== "module.exports")
|
|
148
|
+
) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
`Unsupported self-reference ${dep.base} in concatenated CommonJS module`
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
source.replace(
|
|
154
|
+
dep.range[0],
|
|
155
|
+
dep.range[1] - 1,
|
|
156
|
+
getConcatenatedExportAccess(
|
|
157
|
+
concatenationScope,
|
|
158
|
+
initFragments,
|
|
159
|
+
dep.names
|
|
160
|
+
)
|
|
161
|
+
);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
121
165
|
/** @type {string} */
|
|
122
166
|
let base;
|
|
123
167
|
switch (dep.base) {
|
|
@@ -148,7 +192,7 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
|
|
|
148
192
|
source.replace(
|
|
149
193
|
dep.range[0],
|
|
150
194
|
dep.range[1] - 1,
|
|
151
|
-
`${base}${propertyAccess(used)}`
|
|
195
|
+
`${base}${propertyAccess(/** @type {string[]} */ (used))}`
|
|
152
196
|
);
|
|
153
197
|
}
|
|
154
198
|
};
|
|
@@ -16,20 +16,23 @@ const NullDependency = require("./NullDependency");
|
|
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
17
17
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
18
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
19
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
20
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, number | Range, Set<string> | null]>} ObjectDeserializerContext */
|
|
20
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, number | Range, Set<string> | null]>} ObjectSerializerContext */
|
|
21
21
|
/** @typedef {import("../util/Hash")} Hash */
|
|
22
22
|
|
|
23
23
|
class ConstDependency extends NullDependency {
|
|
24
24
|
/**
|
|
25
|
+
* Creates an instance of ConstDependency.
|
|
25
26
|
* @param {string} expression the expression
|
|
26
27
|
* @param {number | Range} range the source range
|
|
27
28
|
* @param {RawRuntimeRequirements | null=} runtimeRequirements runtime requirements
|
|
28
29
|
*/
|
|
29
30
|
constructor(expression, range, runtimeRequirements) {
|
|
30
31
|
super();
|
|
32
|
+
/** @type {string} */
|
|
31
33
|
this.expression = expression;
|
|
32
34
|
this.range = range;
|
|
35
|
+
/** @type {Set<string> | null} */
|
|
33
36
|
this.runtimeRequirements = runtimeRequirements
|
|
34
37
|
? new Set(runtimeRequirements)
|
|
35
38
|
: null;
|
|
@@ -38,7 +41,7 @@ class ConstDependency extends NullDependency {
|
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
/**
|
|
41
|
-
*
|
|
44
|
+
* Updates the hash with the data contributed by this instance.
|
|
42
45
|
* @param {Hash} hash hash to be updated
|
|
43
46
|
* @param {UpdateHashContext} context context
|
|
44
47
|
* @returns {void}
|
|
@@ -58,6 +61,7 @@ class ConstDependency extends NullDependency {
|
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
/**
|
|
64
|
+
* Gets module evaluation side effects state.
|
|
61
65
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
62
66
|
* @returns {ConnectionState} how this dependency connects the module to referencing modules
|
|
63
67
|
*/
|
|
@@ -66,25 +70,30 @@ class ConstDependency extends NullDependency {
|
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
/**
|
|
73
|
+
* Serializes this instance into the provided serializer context.
|
|
69
74
|
* @param {ObjectSerializerContext} context context
|
|
70
75
|
*/
|
|
71
76
|
serialize(context) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
// chain writes so each position is type-checked against the tuple
|
|
78
|
+
context
|
|
79
|
+
.write(this.expression)
|
|
80
|
+
.write(this.range)
|
|
81
|
+
.write(this.runtimeRequirements);
|
|
76
82
|
super.serialize(context);
|
|
77
83
|
}
|
|
78
84
|
|
|
79
85
|
/**
|
|
86
|
+
* Restores this instance from the provided deserializer context.
|
|
80
87
|
* @param {ObjectDeserializerContext} context context
|
|
81
88
|
*/
|
|
82
89
|
deserialize(context) {
|
|
83
|
-
|
|
84
|
-
this.expression = read();
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
90
|
+
// advance the cursor via `rest` so each read is type-checked by position
|
|
91
|
+
this.expression = context.read();
|
|
92
|
+
const c1 = context.rest;
|
|
93
|
+
this.range = c1.read();
|
|
94
|
+
const c2 = c1.rest;
|
|
95
|
+
this.runtimeRequirements = c2.read();
|
|
96
|
+
super.deserialize(c2.rest);
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
|
|
@@ -94,6 +103,7 @@ ConstDependency.Template = class ConstDependencyTemplate extends (
|
|
|
94
103
|
NullDependency.Template
|
|
95
104
|
) {
|
|
96
105
|
/**
|
|
106
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
97
107
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
98
108
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
99
109
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -14,7 +14,7 @@ const memoize = require("../util/memoize");
|
|
|
14
14
|
/** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
|
|
15
15
|
/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
|
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
17
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
17
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
18
18
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
19
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
20
20
|
|
|
@@ -27,6 +27,7 @@ const getCriticalDependencyWarning = memoize(() =>
|
|
|
27
27
|
/** @typedef {{ value: string, range: Range }[]} Replaces */
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
+
* Returns stringified regexp.
|
|
30
31
|
* @param {RegExp | false | null | undefined} r regexp
|
|
31
32
|
* @returns {string} stringified regexp
|
|
32
33
|
*/
|
|
@@ -34,16 +35,20 @@ const regExpToString = (r) => (r ? String(r) : "");
|
|
|
34
35
|
|
|
35
36
|
class ContextDependency extends Dependency {
|
|
36
37
|
/**
|
|
38
|
+
* Creates an instance of ContextDependency.
|
|
37
39
|
* @param {ContextDependencyOptions} options options for the context module
|
|
38
40
|
* @param {string=} context request context
|
|
39
41
|
*/
|
|
40
42
|
constructor(options, context) {
|
|
41
43
|
super();
|
|
42
44
|
|
|
45
|
+
/** @type {ContextDependencyOptions} */
|
|
43
46
|
this.options = options;
|
|
47
|
+
/** @type {string} */
|
|
44
48
|
this.userRequest = this.options && this.options.request;
|
|
45
49
|
/** @type {false | undefined | string} */
|
|
46
50
|
this.critical = false;
|
|
51
|
+
/** @type {boolean} */
|
|
47
52
|
this.hadGlobalOrStickyRegExp = false;
|
|
48
53
|
|
|
49
54
|
if (
|
|
@@ -65,10 +70,12 @@ class ContextDependency extends Dependency {
|
|
|
65
70
|
this.inShorthand = undefined;
|
|
66
71
|
/** @type {Replaces | undefined} */
|
|
67
72
|
this.replaces = undefined;
|
|
73
|
+
/** @type {string | undefined} */
|
|
68
74
|
this._requestContext = context;
|
|
69
75
|
}
|
|
70
76
|
|
|
71
77
|
/**
|
|
78
|
+
* Returns a request context.
|
|
72
79
|
* @returns {string | undefined} a request context
|
|
73
80
|
*/
|
|
74
81
|
getContext() {
|
|
@@ -80,6 +87,7 @@ class ContextDependency extends Dependency {
|
|
|
80
87
|
}
|
|
81
88
|
|
|
82
89
|
/**
|
|
90
|
+
* Could affect referencing module.
|
|
83
91
|
* @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
|
|
84
92
|
*/
|
|
85
93
|
couldAffectReferencingModule() {
|
|
@@ -87,6 +95,7 @@ class ContextDependency extends Dependency {
|
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
/**
|
|
98
|
+
* Returns an identifier to merge equal requests.
|
|
90
99
|
* @returns {string | null} an identifier to merge equal requests
|
|
91
100
|
*/
|
|
92
101
|
getResourceIdentifier() {
|
|
@@ -108,7 +117,7 @@ class ContextDependency extends Dependency {
|
|
|
108
117
|
}
|
|
109
118
|
|
|
110
119
|
/**
|
|
111
|
-
* Returns warnings
|
|
120
|
+
* Returns warnings.
|
|
112
121
|
* @param {ModuleGraph} moduleGraph module graph
|
|
113
122
|
* @returns {WebpackError[] | null | undefined} warnings
|
|
114
123
|
*/
|
|
@@ -135,6 +144,7 @@ class ContextDependency extends Dependency {
|
|
|
135
144
|
}
|
|
136
145
|
|
|
137
146
|
/**
|
|
147
|
+
* Serializes this instance into the provided serializer context.
|
|
138
148
|
* @param {ObjectSerializerContext} context context
|
|
139
149
|
*/
|
|
140
150
|
serialize(context) {
|
|
@@ -154,6 +164,7 @@ class ContextDependency extends Dependency {
|
|
|
154
164
|
}
|
|
155
165
|
|
|
156
166
|
/**
|
|
167
|
+
* Restores this instance from the provided deserializer context.
|
|
157
168
|
* @param {ObjectDeserializerContext} context context
|
|
158
169
|
*/
|
|
159
170
|
deserialize(context) {
|
|
@@ -25,6 +25,7 @@ const { parseResource } = require("../util/identifier");
|
|
|
25
25
|
const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
+
* Split context from prefix.
|
|
28
29
|
* @param {string} prefix prefix
|
|
29
30
|
* @returns {{ prefix: string, context: string }} result
|
|
30
31
|
*/
|
|
@@ -45,11 +46,13 @@ const splitContextFromPrefix = (prefix) => {
|
|
|
45
46
|
/** @typedef {{ new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...args: EXPECTED_ANY[]): ContextDependency }} ContextDependencyConstructor */
|
|
46
47
|
|
|
47
48
|
/**
|
|
49
|
+
* Defines the get additional dep args type used by this module.
|
|
48
50
|
* @template T
|
|
49
|
-
* @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) =>
|
|
51
|
+
* @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) => ContextDependency ? R : []} GetAdditionalDepArgs
|
|
50
52
|
*/
|
|
51
53
|
|
|
52
54
|
/**
|
|
55
|
+
* Returns the created Dependency.
|
|
53
56
|
* @template {ContextDependencyConstructor} T
|
|
54
57
|
* @param {T} Dep the Dependency class
|
|
55
58
|
* @param {Range} range source range
|
|
@@ -123,7 +126,7 @@ module.exports.create = (
|
|
|
123
126
|
valueRange,
|
|
124
127
|
...depArgs
|
|
125
128
|
);
|
|
126
|
-
dep.loc =
|
|
129
|
+
dep.loc = parser.getLocation(expr);
|
|
127
130
|
|
|
128
131
|
/** @type {Replaces} */
|
|
129
132
|
const replaces = [];
|
|
@@ -221,7 +224,7 @@ module.exports.create = (
|
|
|
221
224
|
valueRange,
|
|
222
225
|
...depArgs
|
|
223
226
|
);
|
|
224
|
-
dep.loc =
|
|
227
|
+
dep.loc = parser.getLocation(expr);
|
|
225
228
|
/** @type {Replaces} */
|
|
226
229
|
const replaces = [];
|
|
227
230
|
if (prefixRange) {
|
|
@@ -266,7 +269,7 @@ module.exports.create = (
|
|
|
266
269
|
/** @type {Range} */ (param.range),
|
|
267
270
|
...depArgs
|
|
268
271
|
);
|
|
269
|
-
dep.loc =
|
|
272
|
+
dep.loc = parser.getLocation(expr);
|
|
270
273
|
dep.critical =
|
|
271
274
|
options.exprContextCritical &&
|
|
272
275
|
"the request of a dependency is an expression";
|
|
@@ -14,6 +14,7 @@ const ContextDependency = require("./ContextDependency");
|
|
|
14
14
|
|
|
15
15
|
class ContextDependencyTemplateAsId extends ContextDependency.Template {
|
|
16
16
|
/**
|
|
17
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
17
18
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
18
19
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
19
20
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -30,7 +31,7 @@ class ContextDependencyTemplateAsId extends ContextDependency.Template {
|
|
|
30
31
|
module,
|
|
31
32
|
chunkGraph,
|
|
32
33
|
request: /** @type {string} */ (dep.request),
|
|
33
|
-
weak: dep.weak,
|
|
34
|
+
weak: /** @type {{ weak?: boolean }} */ (dep).weak,
|
|
34
35
|
runtimeRequirements
|
|
35
36
|
});
|
|
36
37
|
|
|
@@ -16,6 +16,7 @@ class ContextDependencyTemplateAsRequireCall
|
|
|
16
16
|
extends ContextDependency.Template
|
|
17
17
|
{
|
|
18
18
|
/**
|
|
19
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
19
20
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
20
21
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
21
22
|
* @param {DependencyTemplateContext} templateContext the context object
|