@depup/webpack 5.106.0-depup.0 → 5.109.0-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +498 -127
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +15 -0
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +104 -26
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +29 -3
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +43 -7
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +591 -41
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +12 -26
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +682 -368
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +25 -2
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +54 -6
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +663 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +97 -6
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1117 -79
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +8608 -1159
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -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,30 @@ 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
|
|
|
29
33
|
class FlagDependencyUsagePlugin {
|
|
30
34
|
/**
|
|
35
|
+
* Creates an instance of FlagDependencyUsagePlugin.
|
|
31
36
|
* @param {boolean} global do a global analysis instead of per runtime
|
|
37
|
+
* @param {boolean=} mangleEscapingNamespaces keep exports mangleable when a module's namespace object escapes
|
|
32
38
|
*/
|
|
33
|
-
constructor(global) {
|
|
39
|
+
constructor(global, mangleEscapingNamespaces = false) {
|
|
34
40
|
/** @type {boolean} */
|
|
35
41
|
this.global = global;
|
|
42
|
+
/** @type {boolean} */
|
|
43
|
+
this.mangleEscapingNamespaces = mangleEscapingNamespaces;
|
|
36
44
|
}
|
|
37
45
|
|
|
38
46
|
/**
|
|
39
|
-
*
|
|
47
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
40
48
|
* @param {Compiler} compiler the compiler instance
|
|
41
49
|
* @returns {void}
|
|
42
50
|
*/
|
|
@@ -60,6 +68,7 @@ class FlagDependencyUsagePlugin {
|
|
|
60
68
|
const queue = new TupleQueue();
|
|
61
69
|
|
|
62
70
|
/**
|
|
71
|
+
* Process referenced module.
|
|
63
72
|
* @param {Module} module module to process
|
|
64
73
|
* @param {ReferencedExports} usedExports list of used exports
|
|
65
74
|
* @param {RuntimeSpec} runtime part of which runtime
|
|
@@ -73,6 +82,42 @@ class FlagDependencyUsagePlugin {
|
|
|
73
82
|
forceSideEffects
|
|
74
83
|
) => {
|
|
75
84
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
85
|
+
if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
|
|
86
|
+
// The whole namespace object escapes via a reference that codegen
|
|
87
|
+
// can materialize as a decoupled namespace object. When all exports
|
|
88
|
+
// are statically known we keep them mangleable instead of marking
|
|
89
|
+
// them used-in-unknown-way.
|
|
90
|
+
if (
|
|
91
|
+
this.mangleEscapingNamespaces &&
|
|
92
|
+
module.buildMeta &&
|
|
93
|
+
module.buildMeta.exportsType === "namespace" &&
|
|
94
|
+
exportsInfo.otherExportsInfo.provided === false
|
|
95
|
+
) {
|
|
96
|
+
let changed = exportsInfo.setAllKnownExportsUsed(runtime);
|
|
97
|
+
// The whole namespace object is observed as a value, so the
|
|
98
|
+
// module must stay a real ES module namespace at runtime
|
|
99
|
+
// (keep __esModule / the namespace object, i.e. `r()`).
|
|
100
|
+
if (
|
|
101
|
+
exportsInfo
|
|
102
|
+
.getExportInfo("__esModule")
|
|
103
|
+
.setUsed(UsageState.Used, runtime)
|
|
104
|
+
) {
|
|
105
|
+
changed = true;
|
|
106
|
+
}
|
|
107
|
+
// Exports must keep a real binding (not be inlined) so member
|
|
108
|
+
// access on the namespace has ES namespace semantics, e.g.
|
|
109
|
+
// `delete ns.x` hits a non-configurable property and throws.
|
|
110
|
+
for (const exportInfo of exportsInfo.ownedExports) {
|
|
111
|
+
exportInfo.canInlineUse = false;
|
|
112
|
+
}
|
|
113
|
+
if (changed) {
|
|
114
|
+
queue.enqueue(module, runtime);
|
|
115
|
+
}
|
|
116
|
+
} else if (exportsInfo.setUsedInUnknownWay(runtime)) {
|
|
117
|
+
queue.enqueue(module, runtime);
|
|
118
|
+
}
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
76
121
|
if (usedExports.length > 0) {
|
|
77
122
|
if (!module.buildMeta || !module.buildMeta.exportsType) {
|
|
78
123
|
if (exportsInfo.setUsedWithoutInfo(runtime)) {
|
|
@@ -84,11 +129,13 @@ class FlagDependencyUsagePlugin {
|
|
|
84
129
|
/** @type {string[]} */
|
|
85
130
|
let usedExport;
|
|
86
131
|
let canMangle = true;
|
|
132
|
+
let canInline = true;
|
|
87
133
|
if (Array.isArray(usedExportInfo)) {
|
|
88
134
|
usedExport = usedExportInfo;
|
|
89
135
|
} else {
|
|
90
136
|
usedExport = usedExportInfo.name;
|
|
91
137
|
canMangle = usedExportInfo.canMangle !== false;
|
|
138
|
+
canInline = usedExportInfo.canInline !== false;
|
|
92
139
|
}
|
|
93
140
|
if (usedExport.length === 0) {
|
|
94
141
|
if (exportsInfo.setUsedInUnknownWay(runtime)) {
|
|
@@ -103,6 +150,12 @@ class FlagDependencyUsagePlugin {
|
|
|
103
150
|
if (canMangle === false) {
|
|
104
151
|
exportInfo.canMangleUse = false;
|
|
105
152
|
}
|
|
153
|
+
|
|
154
|
+
if (exportInfo.canInlineUse === undefined) {
|
|
155
|
+
exportInfo.canInlineUse = canInline;
|
|
156
|
+
} else if (!canInline) {
|
|
157
|
+
exportInfo.canInlineUse = false;
|
|
158
|
+
}
|
|
106
159
|
const lastOne = i === usedExport.length - 1;
|
|
107
160
|
if (!lastOne) {
|
|
108
161
|
const nestedInfo = exportInfo.getNestedExportsInfo();
|
|
@@ -163,6 +216,7 @@ class FlagDependencyUsagePlugin {
|
|
|
163
216
|
};
|
|
164
217
|
|
|
165
218
|
/**
|
|
219
|
+
* Processes the provided module.
|
|
166
220
|
* @param {DependenciesBlock} module the module
|
|
167
221
|
* @param {RuntimeSpec} runtime part of which runtime
|
|
168
222
|
* @param {boolean} forceSideEffects always apply side effects
|
|
@@ -172,6 +226,11 @@ class FlagDependencyUsagePlugin {
|
|
|
172
226
|
/** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
|
|
173
227
|
/** @type {Map<Module, ReferencedExports | ExportMaps>} */
|
|
174
228
|
const map = new Map();
|
|
229
|
+
// Modules whose whole namespace object escapes in a mangleable way.
|
|
230
|
+
// Tracked separately so specific member references are still merged
|
|
231
|
+
// (and marked used) instead of being dropped by the escape marker.
|
|
232
|
+
/** @type {Set<Module>} */
|
|
233
|
+
const mangleableEscapeModules = new Set();
|
|
175
234
|
|
|
176
235
|
/** @type {ArrayQueue<DependenciesBlock>} */
|
|
177
236
|
const queue = new ArrayQueue();
|
|
@@ -210,10 +269,27 @@ class FlagDependencyUsagePlugin {
|
|
|
210
269
|
}
|
|
211
270
|
const referencedExports =
|
|
212
271
|
compilation.getDependencyReferencedExports(dep, runtime);
|
|
272
|
+
// The non-mangleable whole-object reference is the most
|
|
273
|
+
// conservative result and always wins.
|
|
274
|
+
if (referencedExports === EXPORTS_OBJECT_REFERENCED) {
|
|
275
|
+
map.set(module, EXPORTS_OBJECT_REFERENCED);
|
|
276
|
+
mangleableEscapeModules.delete(module);
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
// A mangleable whole-object escape keeps the module's exports
|
|
280
|
+
// mangleable (applied after the merge). Unlike the conservative
|
|
281
|
+
// marker it must not drop specific member references: those still
|
|
282
|
+
// need their own (possibly non-existent) export marked used so
|
|
283
|
+
// they render as a qualified access, not a bare `undefined`.
|
|
284
|
+
if (
|
|
285
|
+
referencedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE
|
|
286
|
+
) {
|
|
287
|
+
mangleableEscapeModules.add(module);
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
213
290
|
if (
|
|
214
291
|
oldReferencedExports === undefined ||
|
|
215
|
-
oldReferencedExports === NO_EXPORTS_REFERENCED
|
|
216
|
-
referencedExports === EXPORTS_OBJECT_REFERENCED
|
|
292
|
+
oldReferencedExports === NO_EXPORTS_REFERENCED
|
|
217
293
|
) {
|
|
218
294
|
map.set(module, referencedExports);
|
|
219
295
|
} else if (
|
|
@@ -255,7 +331,8 @@ class FlagDependencyUsagePlugin {
|
|
|
255
331
|
} else {
|
|
256
332
|
exportsMap.set(key, {
|
|
257
333
|
name: item.name,
|
|
258
|
-
canMangle: item.canMangle && oldItem.canMangle
|
|
334
|
+
canMangle: item.canMangle && oldItem.canMangle,
|
|
335
|
+
canInline: item.canInline && oldItem.canInline
|
|
259
336
|
});
|
|
260
337
|
}
|
|
261
338
|
}
|
|
@@ -281,6 +358,14 @@ class FlagDependencyUsagePlugin {
|
|
|
281
358
|
);
|
|
282
359
|
}
|
|
283
360
|
}
|
|
361
|
+
for (const module of mangleableEscapeModules) {
|
|
362
|
+
processReferencedModule(
|
|
363
|
+
module,
|
|
364
|
+
EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
|
|
365
|
+
runtime,
|
|
366
|
+
forceSideEffects
|
|
367
|
+
);
|
|
368
|
+
}
|
|
284
369
|
};
|
|
285
370
|
|
|
286
371
|
logger.time("initialize exports usage");
|
|
@@ -294,6 +379,7 @@ class FlagDependencyUsagePlugin {
|
|
|
294
379
|
logger.time("trace exports usage in graph");
|
|
295
380
|
|
|
296
381
|
/**
|
|
382
|
+
* Process entry dependency.
|
|
297
383
|
* @param {Dependency} dep dependency
|
|
298
384
|
* @param {RuntimeSpec} runtime runtime
|
|
299
385
|
*/
|
|
@@ -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
|