@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
|
@@ -14,14 +14,16 @@ const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
|
|
|
14
14
|
const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
|
|
15
15
|
class FlagAllModulesAsUsedPlugin {
|
|
16
16
|
/**
|
|
17
|
+
* Creates an instance of FlagAllModulesAsUsedPlugin.
|
|
17
18
|
* @param {string} explanation explanation
|
|
18
19
|
*/
|
|
19
20
|
constructor(explanation) {
|
|
21
|
+
/** @type {string} */
|
|
20
22
|
this.explanation = explanation;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
26
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
25
27
|
* @param {Compiler} compiler the compiler instance
|
|
26
28
|
* @returns {void}
|
|
27
29
|
*/
|
|
@@ -41,11 +43,6 @@ class FlagAllModulesAsUsedPlugin {
|
|
|
41
43
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
42
44
|
exportsInfo.setUsedInUnknownWay(runtime);
|
|
43
45
|
moduleGraph.addExtraReason(module, this.explanation);
|
|
44
|
-
if (module.factoryMeta === undefined) {
|
|
45
|
-
module.factoryMeta = {};
|
|
46
|
-
}
|
|
47
|
-
/** @type {FactoryMeta} */
|
|
48
|
-
(module.factoryMeta).sideEffectFree = false;
|
|
49
46
|
}
|
|
50
47
|
});
|
|
51
48
|
});
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
const asyncLib = require("neo-async");
|
|
9
9
|
const Queue = require("./util/Queue");
|
|
10
|
+
const createHash = require("./util/createHash");
|
|
10
11
|
|
|
11
12
|
/** @typedef {import("./Compiler")} Compiler */
|
|
12
13
|
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
|
@@ -16,15 +17,35 @@ const Queue = require("./util/Queue");
|
|
|
16
17
|
/** @typedef {import("./ExportsInfo")} ExportsInfo */
|
|
17
18
|
/** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
|
|
18
19
|
/** @typedef {import("./ExportsInfo").RestoreProvidedData} RestoreProvidedData */
|
|
20
|
+
/** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
|
|
21
|
+
/** @typedef {import("./LazyBarrel")} LazyBarrelController */
|
|
19
22
|
/** @typedef {import("./Module")} Module */
|
|
20
23
|
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
|
21
24
|
|
|
22
25
|
const PLUGIN_NAME = "FlagDependencyExportsPlugin";
|
|
23
26
|
const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
|
|
24
27
|
|
|
28
|
+
/** @typedef {{ etag: string, data: RestoreProvidedData }} MemCacheEntry */
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {Module} module the module
|
|
32
|
+
* @param {LazyBarrelController} lazyBarrelController the compilation's lazy barrel controller
|
|
33
|
+
* @param {HashFunction} hashFunction hash function for long keys
|
|
34
|
+
* @returns {string} the hash
|
|
35
|
+
*/
|
|
36
|
+
const getLazyRequestsHash = (module, lazyBarrelController, hashFunction) => {
|
|
37
|
+
const lazyKeys = lazyBarrelController.getLazyRequests(module);
|
|
38
|
+
if (!lazyKeys) return "";
|
|
39
|
+
const joined = [...lazyKeys].join("|");
|
|
40
|
+
if (joined.length < 100) return joined;
|
|
41
|
+
const hash = createHash(hashFunction);
|
|
42
|
+
hash.update(joined);
|
|
43
|
+
return /** @type {string} */ (hash.digest("hex"));
|
|
44
|
+
};
|
|
45
|
+
|
|
25
46
|
class FlagDependencyExportsPlugin {
|
|
26
47
|
/**
|
|
27
|
-
*
|
|
48
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
28
49
|
* @param {Compiler} compiler the compiler instance
|
|
29
50
|
* @returns {void}
|
|
30
51
|
*/
|
|
@@ -32,6 +53,8 @@ class FlagDependencyExportsPlugin {
|
|
|
32
53
|
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
33
54
|
const moduleGraph = compilation.moduleGraph;
|
|
34
55
|
const cache = compilation.getCache(PLUGIN_NAME);
|
|
56
|
+
const lazyBarrelController = compilation._lazyBarrelController;
|
|
57
|
+
const hashFunction = compilation.outputOptions.hashFunction;
|
|
35
58
|
compilation.hooks.finishModules.tapAsync(
|
|
36
59
|
PLUGIN_NAME,
|
|
37
60
|
(modules, callback) => {
|
|
@@ -80,16 +103,28 @@ class FlagDependencyExportsPlugin {
|
|
|
80
103
|
return callback();
|
|
81
104
|
}
|
|
82
105
|
const memCache = moduleMemCaches && moduleMemCaches.get(module);
|
|
83
|
-
|
|
84
|
-
|
|
106
|
+
/** @type {MemCacheEntry | undefined} */
|
|
107
|
+
const memCacheEntry = memCache && memCache.get(this);
|
|
108
|
+
const hash = getLazyRequestsHash(
|
|
109
|
+
module,
|
|
110
|
+
lazyBarrelController,
|
|
111
|
+
hashFunction
|
|
112
|
+
);
|
|
113
|
+
// validated by the still-lazy request keys: reference-change
|
|
114
|
+
// detection cannot invalidate the mem cache when the un-lazied
|
|
115
|
+
// connections are unsafe-cached (they are skipped when comparing
|
|
116
|
+
// references)
|
|
117
|
+
if (memCacheEntry !== undefined && memCacheEntry.etag === hash) {
|
|
85
118
|
statRestoredFromMemCache++;
|
|
86
|
-
exportsInfo.restoreProvided(
|
|
119
|
+
exportsInfo.restoreProvided(memCacheEntry.data);
|
|
87
120
|
return callback();
|
|
88
121
|
}
|
|
122
|
+
const buildHash = /** @type {string} */ (
|
|
123
|
+
/** @type {BuildInfo} */ (module.buildInfo).hash
|
|
124
|
+
);
|
|
89
125
|
cache.get(
|
|
90
126
|
module.identifier(),
|
|
91
|
-
|
|
92
|
-
(module.buildInfo).hash,
|
|
127
|
+
hash ? `${buildHash}|${hash}` : buildHash,
|
|
93
128
|
(err, result) => {
|
|
94
129
|
if (err) return callback(err);
|
|
95
130
|
|
|
@@ -129,6 +164,7 @@ class FlagDependencyExportsPlugin {
|
|
|
129
164
|
let changed = false;
|
|
130
165
|
|
|
131
166
|
/**
|
|
167
|
+
* Process dependencies block.
|
|
132
168
|
* @param {DependenciesBlock} depBlock the dependencies block
|
|
133
169
|
* @returns {void}
|
|
134
170
|
*/
|
|
@@ -142,6 +178,7 @@ class FlagDependencyExportsPlugin {
|
|
|
142
178
|
};
|
|
143
179
|
|
|
144
180
|
/**
|
|
181
|
+
* Process dependency.
|
|
145
182
|
* @param {Dependency} dep the dependency
|
|
146
183
|
* @returns {void}
|
|
147
184
|
*/
|
|
@@ -152,6 +189,7 @@ class FlagDependencyExportsPlugin {
|
|
|
152
189
|
};
|
|
153
190
|
|
|
154
191
|
/**
|
|
192
|
+
* Process exports spec.
|
|
155
193
|
* @param {Dependency} dep dependency
|
|
156
194
|
* @param {ExportsSpec} exportDesc info
|
|
157
195
|
* @returns {void}
|
|
@@ -163,6 +201,7 @@ class FlagDependencyExportsPlugin {
|
|
|
163
201
|
const globalPriority = exportDesc.priority;
|
|
164
202
|
const globalTerminalBinding =
|
|
165
203
|
exportDesc.terminalBinding || false;
|
|
204
|
+
const globalPure = exportDesc.isPure || false;
|
|
166
205
|
const exportDeps = exportDesc.dependencies;
|
|
167
206
|
if (exportDesc.hideExports) {
|
|
168
207
|
for (const name of exportDesc.hideExports) {
|
|
@@ -195,6 +234,7 @@ class FlagDependencyExportsPlugin {
|
|
|
195
234
|
let name;
|
|
196
235
|
let canMangle = globalCanMangle;
|
|
197
236
|
let terminalBinding = globalTerminalBinding;
|
|
237
|
+
let pure = globalPure;
|
|
198
238
|
/** @type {ExportSpec["exports"]} */
|
|
199
239
|
let exports;
|
|
200
240
|
let from = globalFrom;
|
|
@@ -202,6 +242,8 @@ class FlagDependencyExportsPlugin {
|
|
|
202
242
|
let fromExport;
|
|
203
243
|
let priority = globalPriority;
|
|
204
244
|
let hidden = false;
|
|
245
|
+
/** @type {ExportSpec["inlined"]} */
|
|
246
|
+
let inlined;
|
|
205
247
|
if (typeof exportNameOrSpec === "string") {
|
|
206
248
|
name = exportNameOrSpec;
|
|
207
249
|
} else {
|
|
@@ -224,9 +266,15 @@ class FlagDependencyExportsPlugin {
|
|
|
224
266
|
if (exportNameOrSpec.terminalBinding !== undefined) {
|
|
225
267
|
terminalBinding = exportNameOrSpec.terminalBinding;
|
|
226
268
|
}
|
|
269
|
+
if (exportNameOrSpec.isPure !== undefined) {
|
|
270
|
+
pure = exportNameOrSpec.isPure;
|
|
271
|
+
}
|
|
227
272
|
if (exportNameOrSpec.hidden !== undefined) {
|
|
228
273
|
hidden = exportNameOrSpec.hidden;
|
|
229
274
|
}
|
|
275
|
+
if (exportNameOrSpec.inlined !== undefined) {
|
|
276
|
+
inlined = exportNameOrSpec.inlined;
|
|
277
|
+
}
|
|
230
278
|
}
|
|
231
279
|
const exportInfo = exportsInfo.getExportInfo(name);
|
|
232
280
|
|
|
@@ -246,11 +294,24 @@ class FlagDependencyExportsPlugin {
|
|
|
246
294
|
changed = true;
|
|
247
295
|
}
|
|
248
296
|
|
|
297
|
+
if (
|
|
298
|
+
inlined !== undefined &&
|
|
299
|
+
exportInfo.canInlineProvide === undefined
|
|
300
|
+
) {
|
|
301
|
+
exportInfo.canInlineProvide = inlined;
|
|
302
|
+
changed = true;
|
|
303
|
+
}
|
|
304
|
+
|
|
249
305
|
if (terminalBinding && !exportInfo.terminalBinding) {
|
|
250
306
|
exportInfo.terminalBinding = true;
|
|
251
307
|
changed = true;
|
|
252
308
|
}
|
|
253
309
|
|
|
310
|
+
if (pure && exportInfo.pureProvide !== true) {
|
|
311
|
+
exportInfo.pureProvide = true;
|
|
312
|
+
changed = true;
|
|
313
|
+
}
|
|
314
|
+
|
|
254
315
|
if (exports) {
|
|
255
316
|
const nestedExportsInfo =
|
|
256
317
|
exportInfo.createNestedExportsInfo();
|
|
@@ -395,13 +456,25 @@ class FlagDependencyExportsPlugin {
|
|
|
395
456
|
.getRestoreProvidedData();
|
|
396
457
|
const memCache =
|
|
397
458
|
moduleMemCaches && moduleMemCaches.get(module);
|
|
459
|
+
const hash = getLazyRequestsHash(
|
|
460
|
+
module,
|
|
461
|
+
lazyBarrelController,
|
|
462
|
+
hashFunction
|
|
463
|
+
);
|
|
398
464
|
if (memCache) {
|
|
399
|
-
|
|
465
|
+
/** @type {MemCacheEntry} */
|
|
466
|
+
const entry = {
|
|
467
|
+
etag: hash,
|
|
468
|
+
data: cachedData
|
|
469
|
+
};
|
|
470
|
+
memCache.set(this, entry);
|
|
400
471
|
}
|
|
472
|
+
const buildHash = /** @type {string} */ (
|
|
473
|
+
/** @type {BuildInfo} */ (module.buildInfo).hash
|
|
474
|
+
);
|
|
401
475
|
cache.store(
|
|
402
476
|
module.identifier(),
|
|
403
|
-
|
|
404
|
-
(module.buildInfo).hash,
|
|
477
|
+
hash ? `${buildHash}|${hash}` : buildHash,
|
|
405
478
|
cachedData,
|
|
406
479
|
callback
|
|
407
480
|
);
|
|
@@ -21,22 +21,43 @@ const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
|
|
|
21
21
|
/** @typedef {import("./Module")} Module */
|
|
22
22
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
23
23
|
|
|
24
|
-
const {
|
|
24
|
+
const {
|
|
25
|
+
NO_EXPORTS_REFERENCED,
|
|
26
|
+
EXPORTS_OBJECT_REFERENCED,
|
|
27
|
+
EXPORTS_OBJECT_REFERENCED_MANGLEABLE
|
|
28
|
+
} = Dependency;
|
|
25
29
|
|
|
26
30
|
const PLUGIN_NAME = "FlagDependencyUsagePlugin";
|
|
27
31
|
const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
|
|
28
32
|
|
|
33
|
+
// Hoisted stateless predicates for setUsedConditionally on the innermost
|
|
34
|
+
// used-export loop, so they aren't re-allocated per export.
|
|
35
|
+
/**
|
|
36
|
+
* @param {import("./ExportsInfo").UsageStateType} used usage state
|
|
37
|
+
* @returns {boolean} whether unused
|
|
38
|
+
*/
|
|
39
|
+
const IS_UNUSED = (used) => used === UsageState.Unused;
|
|
40
|
+
/**
|
|
41
|
+
* @param {import("./ExportsInfo").UsageStateType} used usage state
|
|
42
|
+
* @returns {boolean} whether not used
|
|
43
|
+
*/
|
|
44
|
+
const IS_NOT_USED = (used) => used !== UsageState.Used;
|
|
45
|
+
|
|
29
46
|
class FlagDependencyUsagePlugin {
|
|
30
47
|
/**
|
|
48
|
+
* Creates an instance of FlagDependencyUsagePlugin.
|
|
31
49
|
* @param {boolean} global do a global analysis instead of per runtime
|
|
50
|
+
* @param {boolean=} mangleEscapingNamespaces keep exports mangleable when a module's namespace object escapes
|
|
32
51
|
*/
|
|
33
|
-
constructor(global) {
|
|
52
|
+
constructor(global, mangleEscapingNamespaces = false) {
|
|
34
53
|
/** @type {boolean} */
|
|
35
54
|
this.global = global;
|
|
55
|
+
/** @type {boolean} */
|
|
56
|
+
this.mangleEscapingNamespaces = mangleEscapingNamespaces;
|
|
36
57
|
}
|
|
37
58
|
|
|
38
59
|
/**
|
|
39
|
-
*
|
|
60
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
40
61
|
* @param {Compiler} compiler the compiler instance
|
|
41
62
|
* @returns {void}
|
|
42
63
|
*/
|
|
@@ -60,6 +81,7 @@ class FlagDependencyUsagePlugin {
|
|
|
60
81
|
const queue = new TupleQueue();
|
|
61
82
|
|
|
62
83
|
/**
|
|
84
|
+
* Process referenced module.
|
|
63
85
|
* @param {Module} module module to process
|
|
64
86
|
* @param {ReferencedExports} usedExports list of used exports
|
|
65
87
|
* @param {RuntimeSpec} runtime part of which runtime
|
|
@@ -73,6 +95,42 @@ class FlagDependencyUsagePlugin {
|
|
|
73
95
|
forceSideEffects
|
|
74
96
|
) => {
|
|
75
97
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
98
|
+
if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
|
|
99
|
+
// The whole namespace object escapes via a reference that codegen
|
|
100
|
+
// can materialize as a decoupled namespace object. When all exports
|
|
101
|
+
// are statically known we keep them mangleable instead of marking
|
|
102
|
+
// them used-in-unknown-way.
|
|
103
|
+
if (
|
|
104
|
+
this.mangleEscapingNamespaces &&
|
|
105
|
+
module.buildMeta &&
|
|
106
|
+
module.buildMeta.exportsType === "namespace" &&
|
|
107
|
+
exportsInfo.otherExportsInfo.provided === false
|
|
108
|
+
) {
|
|
109
|
+
let changed = exportsInfo.setAllKnownExportsUsed(runtime);
|
|
110
|
+
// The whole namespace object is observed as a value, so the
|
|
111
|
+
// module must stay a real ES module namespace at runtime
|
|
112
|
+
// (keep __esModule / the namespace object, i.e. `r()`).
|
|
113
|
+
if (
|
|
114
|
+
exportsInfo
|
|
115
|
+
.getExportInfo("__esModule")
|
|
116
|
+
.setUsed(UsageState.Used, runtime)
|
|
117
|
+
) {
|
|
118
|
+
changed = true;
|
|
119
|
+
}
|
|
120
|
+
// Exports must keep a real binding (not be inlined) so member
|
|
121
|
+
// access on the namespace has ES namespace semantics, e.g.
|
|
122
|
+
// `delete ns.x` hits a non-configurable property and throws.
|
|
123
|
+
for (const exportInfo of exportsInfo.ownedExports) {
|
|
124
|
+
exportInfo.canInlineUse = false;
|
|
125
|
+
}
|
|
126
|
+
if (changed) {
|
|
127
|
+
queue.enqueue(module, runtime);
|
|
128
|
+
}
|
|
129
|
+
} else if (exportsInfo.setUsedInUnknownWay(runtime)) {
|
|
130
|
+
queue.enqueue(module, runtime);
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
76
134
|
if (usedExports.length > 0) {
|
|
77
135
|
if (!module.buildMeta || !module.buildMeta.exportsType) {
|
|
78
136
|
if (exportsInfo.setUsedWithoutInfo(runtime)) {
|
|
@@ -84,11 +142,13 @@ class FlagDependencyUsagePlugin {
|
|
|
84
142
|
/** @type {string[]} */
|
|
85
143
|
let usedExport;
|
|
86
144
|
let canMangle = true;
|
|
145
|
+
let canInline = true;
|
|
87
146
|
if (Array.isArray(usedExportInfo)) {
|
|
88
147
|
usedExport = usedExportInfo;
|
|
89
148
|
} else {
|
|
90
149
|
usedExport = usedExportInfo.name;
|
|
91
150
|
canMangle = usedExportInfo.canMangle !== false;
|
|
151
|
+
canInline = usedExportInfo.canInline !== false;
|
|
92
152
|
}
|
|
93
153
|
if (usedExport.length === 0) {
|
|
94
154
|
if (exportsInfo.setUsedInUnknownWay(runtime)) {
|
|
@@ -103,13 +163,19 @@ class FlagDependencyUsagePlugin {
|
|
|
103
163
|
if (canMangle === false) {
|
|
104
164
|
exportInfo.canMangleUse = false;
|
|
105
165
|
}
|
|
166
|
+
|
|
167
|
+
if (exportInfo.canInlineUse === undefined) {
|
|
168
|
+
exportInfo.canInlineUse = canInline;
|
|
169
|
+
} else if (!canInline) {
|
|
170
|
+
exportInfo.canInlineUse = false;
|
|
171
|
+
}
|
|
106
172
|
const lastOne = i === usedExport.length - 1;
|
|
107
173
|
if (!lastOne) {
|
|
108
174
|
const nestedInfo = exportInfo.getNestedExportsInfo();
|
|
109
175
|
if (nestedInfo) {
|
|
110
176
|
if (
|
|
111
177
|
exportInfo.setUsedConditionally(
|
|
112
|
-
|
|
178
|
+
IS_UNUSED,
|
|
113
179
|
UsageState.OnlyPropertiesUsed,
|
|
114
180
|
runtime
|
|
115
181
|
)
|
|
@@ -128,7 +194,7 @@ class FlagDependencyUsagePlugin {
|
|
|
128
194
|
}
|
|
129
195
|
if (
|
|
130
196
|
exportInfo.setUsedConditionally(
|
|
131
|
-
|
|
197
|
+
IS_NOT_USED,
|
|
132
198
|
UsageState.Used,
|
|
133
199
|
runtime
|
|
134
200
|
)
|
|
@@ -163,6 +229,7 @@ class FlagDependencyUsagePlugin {
|
|
|
163
229
|
};
|
|
164
230
|
|
|
165
231
|
/**
|
|
232
|
+
* Processes the provided module.
|
|
166
233
|
* @param {DependenciesBlock} module the module
|
|
167
234
|
* @param {RuntimeSpec} runtime part of which runtime
|
|
168
235
|
* @param {boolean} forceSideEffects always apply side effects
|
|
@@ -172,6 +239,12 @@ class FlagDependencyUsagePlugin {
|
|
|
172
239
|
/** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
|
|
173
240
|
/** @type {Map<Module, ReferencedExports | ExportMaps>} */
|
|
174
241
|
const map = new Map();
|
|
242
|
+
// Modules whose whole namespace object escapes in a mangleable way.
|
|
243
|
+
// Tracked separately so specific member references are still merged
|
|
244
|
+
// (and marked used) instead of being dropped by the escape marker.
|
|
245
|
+
// Lazily allocated — usually empty.
|
|
246
|
+
/** @type {Set<Module> | undefined} */
|
|
247
|
+
let mangleableEscapeModules;
|
|
175
248
|
|
|
176
249
|
/** @type {ArrayQueue<DependenciesBlock>} */
|
|
177
250
|
const queue = new ArrayQueue();
|
|
@@ -210,10 +283,32 @@ class FlagDependencyUsagePlugin {
|
|
|
210
283
|
}
|
|
211
284
|
const referencedExports =
|
|
212
285
|
compilation.getDependencyReferencedExports(dep, runtime);
|
|
286
|
+
// The non-mangleable whole-object reference is the most
|
|
287
|
+
// conservative result and always wins.
|
|
288
|
+
if (referencedExports === EXPORTS_OBJECT_REFERENCED) {
|
|
289
|
+
map.set(module, EXPORTS_OBJECT_REFERENCED);
|
|
290
|
+
if (mangleableEscapeModules) {
|
|
291
|
+
mangleableEscapeModules.delete(module);
|
|
292
|
+
}
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
// A mangleable whole-object escape keeps the module's exports
|
|
296
|
+
// mangleable (applied after the merge). Unlike the conservative
|
|
297
|
+
// marker it must not drop specific member references: those still
|
|
298
|
+
// need their own (possibly non-existent) export marked used so
|
|
299
|
+
// they render as a qualified access, not a bare `undefined`.
|
|
300
|
+
if (
|
|
301
|
+
referencedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE
|
|
302
|
+
) {
|
|
303
|
+
if (mangleableEscapeModules === undefined) {
|
|
304
|
+
mangleableEscapeModules = new Set();
|
|
305
|
+
}
|
|
306
|
+
mangleableEscapeModules.add(module);
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
213
309
|
if (
|
|
214
310
|
oldReferencedExports === undefined ||
|
|
215
|
-
oldReferencedExports === NO_EXPORTS_REFERENCED
|
|
216
|
-
referencedExports === EXPORTS_OBJECT_REFERENCED
|
|
311
|
+
oldReferencedExports === NO_EXPORTS_REFERENCED
|
|
217
312
|
) {
|
|
218
313
|
map.set(module, referencedExports);
|
|
219
314
|
} else if (
|
|
@@ -255,7 +350,8 @@ class FlagDependencyUsagePlugin {
|
|
|
255
350
|
} else {
|
|
256
351
|
exportsMap.set(key, {
|
|
257
352
|
name: item.name,
|
|
258
|
-
canMangle: item.canMangle && oldItem.canMangle
|
|
353
|
+
canMangle: item.canMangle && oldItem.canMangle,
|
|
354
|
+
canInline: item.canInline && oldItem.canInline
|
|
259
355
|
});
|
|
260
356
|
}
|
|
261
357
|
}
|
|
@@ -281,6 +377,16 @@ class FlagDependencyUsagePlugin {
|
|
|
281
377
|
);
|
|
282
378
|
}
|
|
283
379
|
}
|
|
380
|
+
if (mangleableEscapeModules) {
|
|
381
|
+
for (const module of mangleableEscapeModules) {
|
|
382
|
+
processReferencedModule(
|
|
383
|
+
module,
|
|
384
|
+
EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
|
|
385
|
+
runtime,
|
|
386
|
+
forceSideEffects
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
284
390
|
};
|
|
285
391
|
|
|
286
392
|
logger.time("initialize exports usage");
|
|
@@ -294,6 +400,7 @@ class FlagDependencyUsagePlugin {
|
|
|
294
400
|
logger.time("trace exports usage in graph");
|
|
295
401
|
|
|
296
402
|
/**
|
|
403
|
+
* Process entry dependency.
|
|
297
404
|
* @param {Dependency} dep dependency
|
|
298
405
|
* @param {RuntimeSpec} runtime runtime
|
|
299
406
|
*/
|
|
@@ -13,16 +13,19 @@ const PLUGIN_NAME = "FlagEntryExportAsUsedPlugin";
|
|
|
13
13
|
|
|
14
14
|
class FlagEntryExportAsUsedPlugin {
|
|
15
15
|
/**
|
|
16
|
+
* Creates an instance of FlagEntryExportAsUsedPlugin.
|
|
16
17
|
* @param {boolean} nsObjectUsed true, if the ns object is used
|
|
17
18
|
* @param {string} explanation explanation for the reason
|
|
18
19
|
*/
|
|
19
20
|
constructor(nsObjectUsed, explanation) {
|
|
21
|
+
/** @type {boolean} */
|
|
20
22
|
this.nsObjectUsed = nsObjectUsed;
|
|
23
|
+
/** @type {string} */
|
|
21
24
|
this.explanation = explanation;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
28
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
26
29
|
* @param {Compiler} compiler the compiler instance
|
|
27
30
|
* @returns {void}
|
|
28
31
|
*/
|
package/lib/Generator.js
CHANGED
|
@@ -24,6 +24,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
|
|
|
24
24
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
+
* Defines the generate context type used by this module.
|
|
27
28
|
* @typedef {object} GenerateContext
|
|
28
29
|
* @property {DependencyTemplates} dependencyTemplates mapping from dependencies to templates
|
|
29
30
|
* @property {RuntimeTemplate} runtimeTemplate the runtime template
|
|
@@ -38,6 +39,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
|
|
|
38
39
|
*/
|
|
39
40
|
|
|
40
41
|
/**
|
|
42
|
+
* Defines the generate error fn callback.
|
|
41
43
|
* @callback GenerateErrorFn
|
|
42
44
|
* @param {Error} error the error
|
|
43
45
|
* @param {NormalModule} module module for which the code should be generated
|
|
@@ -46,6 +48,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
|
|
|
46
48
|
*/
|
|
47
49
|
|
|
48
50
|
/**
|
|
51
|
+
* Represents the generator runtime component.
|
|
49
52
|
* @typedef {object} UpdateHashContext
|
|
50
53
|
* @property {NormalModule} module the module
|
|
51
54
|
* @property {ChunkGraph} chunkGraph
|
|
@@ -55,6 +58,7 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
|
|
|
55
58
|
|
|
56
59
|
class Generator {
|
|
57
60
|
/**
|
|
61
|
+
* Returns generator by type.
|
|
58
62
|
* @param {{ [key in SourceType]?: Generator }} map map of types
|
|
59
63
|
* @returns {ByTypeGenerator} generator by type
|
|
60
64
|
*/
|
|
@@ -64,31 +68,41 @@ class Generator {
|
|
|
64
68
|
|
|
65
69
|
/* istanbul ignore next */
|
|
66
70
|
/**
|
|
71
|
+
* Returns the source types available for this module.
|
|
67
72
|
* @abstract
|
|
68
73
|
* @param {NormalModule} module fresh module
|
|
69
74
|
* @returns {SourceTypes} available types (do not mutate)
|
|
70
75
|
*/
|
|
71
76
|
getTypes(module) {
|
|
72
|
-
const AbstractMethodError = require("./AbstractMethodError");
|
|
77
|
+
const AbstractMethodError = require("./errors/AbstractMethodError");
|
|
73
78
|
|
|
74
79
|
throw new AbstractMethodError();
|
|
75
80
|
}
|
|
76
81
|
|
|
82
|
+
/**
|
|
83
|
+
* @returns {boolean} whether getTypes() depends on the module's incoming connections
|
|
84
|
+
*/
|
|
85
|
+
getTypesDependOnIncomingConnections() {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
|
|
77
89
|
/* istanbul ignore next */
|
|
78
90
|
/**
|
|
91
|
+
* Returns the estimated size for the requested source type.
|
|
79
92
|
* @abstract
|
|
80
93
|
* @param {NormalModule} module the module
|
|
81
94
|
* @param {SourceType=} type source type
|
|
82
95
|
* @returns {number} estimate size of the module
|
|
83
96
|
*/
|
|
84
97
|
getSize(module, type) {
|
|
85
|
-
const AbstractMethodError = require("./AbstractMethodError");
|
|
98
|
+
const AbstractMethodError = require("./errors/AbstractMethodError");
|
|
86
99
|
|
|
87
100
|
throw new AbstractMethodError();
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
/* istanbul ignore next */
|
|
91
104
|
/**
|
|
105
|
+
* Generates generated code for this runtime module.
|
|
92
106
|
* @abstract
|
|
93
107
|
* @param {NormalModule} module module for which the code should be generated
|
|
94
108
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -98,12 +112,13 @@ class Generator {
|
|
|
98
112
|
module,
|
|
99
113
|
{ dependencyTemplates, runtimeTemplate, moduleGraph, type }
|
|
100
114
|
) {
|
|
101
|
-
const AbstractMethodError = require("./AbstractMethodError");
|
|
115
|
+
const AbstractMethodError = require("./errors/AbstractMethodError");
|
|
102
116
|
|
|
103
117
|
throw new AbstractMethodError();
|
|
104
118
|
}
|
|
105
119
|
|
|
106
120
|
/**
|
|
121
|
+
* Returns the reason this module cannot be concatenated, when one exists.
|
|
107
122
|
* @param {NormalModule} module module for which the bailout reason should be determined
|
|
108
123
|
* @param {ConcatenationBailoutReasonContext} context context
|
|
109
124
|
* @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
|
|
@@ -113,6 +128,7 @@ class Generator {
|
|
|
113
128
|
}
|
|
114
129
|
|
|
115
130
|
/**
|
|
131
|
+
* Updates the hash with the data contributed by this instance.
|
|
116
132
|
* @param {Hash} hash hash that will be modified
|
|
117
133
|
* @param {UpdateHashContext} updateHashContext context for updating hash
|
|
118
134
|
*/
|
|
@@ -141,17 +157,20 @@ function generateError(error, module, generateContext) {
|
|
|
141
157
|
|
|
142
158
|
class ByTypeGenerator extends Generator {
|
|
143
159
|
/**
|
|
160
|
+
* Creates an instance of ByTypeGenerator.
|
|
144
161
|
* @param {{ [key in SourceType]?: Generator }} map map of types
|
|
145
162
|
*/
|
|
146
163
|
constructor(map) {
|
|
147
164
|
super();
|
|
148
165
|
this.map = map;
|
|
166
|
+
/** @type {SourceTypes} */
|
|
149
167
|
this._types = /** @type {SourceTypes} */ (new Set(Object.keys(map)));
|
|
150
168
|
/** @type {GenerateErrorFn | undefined} */
|
|
151
169
|
this.generateError = generateError.bind(this);
|
|
152
170
|
}
|
|
153
171
|
|
|
154
172
|
/**
|
|
173
|
+
* Returns the source types available for this module.
|
|
155
174
|
* @param {NormalModule} module fresh module
|
|
156
175
|
* @returns {SourceTypes} available types (do not mutate)
|
|
157
176
|
*/
|
|
@@ -160,6 +179,7 @@ class ByTypeGenerator extends Generator {
|
|
|
160
179
|
}
|
|
161
180
|
|
|
162
181
|
/**
|
|
182
|
+
* Returns the estimated size for the requested source type.
|
|
163
183
|
* @param {NormalModule} module the module
|
|
164
184
|
* @param {SourceType=} type source type
|
|
165
185
|
* @returns {number} estimate size of the module
|
|
@@ -171,6 +191,7 @@ class ByTypeGenerator extends Generator {
|
|
|
171
191
|
}
|
|
172
192
|
|
|
173
193
|
/**
|
|
194
|
+
* Generates generated code for this runtime module.
|
|
174
195
|
* @param {NormalModule} module module for which the code should be generated
|
|
175
196
|
* @param {GenerateContext} generateContext context for generate
|
|
176
197
|
* @returns {Source | null} generated code
|