@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
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Haijie Xie @hai-x
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const Dependency = require("./Dependency");
|
|
9
|
+
|
|
10
|
+
/** @typedef {import("./Compilation")} Compilation */
|
|
11
|
+
/** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
|
|
12
|
+
/** @typedef {import("./Module")} Module */
|
|
13
|
+
/** @typedef {import("./ModuleFactory")} ModuleFactory */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Defines the deferred request group type used by this module.
|
|
17
|
+
* @typedef {object} DependencyGroup
|
|
18
|
+
* @property {ModuleFactory} factory factory for the request
|
|
19
|
+
* @property {Dependency[]} dependencies deferred dependencies of the request
|
|
20
|
+
* @property {string | undefined} context request context
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Defines the lazy barrel state type used by this module.
|
|
25
|
+
* @typedef {object} LazyBarrelState
|
|
26
|
+
* @property {Set<string> | true} forwardedIds export names requested so far, true for all
|
|
27
|
+
* @property {LazyBarrelInfo | undefined} lazyBarrelInfo deferred dependencies, undefined until classified
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Defines the lazy barrel unlazy item type used by this module.
|
|
32
|
+
* @typedef {object} UnlazyDependencyInfo
|
|
33
|
+
* @property {ModuleFactory} factory factory for the request
|
|
34
|
+
* @property {Dependency[]} dependencies deferred dependencies of the request
|
|
35
|
+
* @property {string | undefined} context request context
|
|
36
|
+
* @property {Module} originModule the lazy barrel module
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Collects the export names a dependency group requests from its target.
|
|
41
|
+
* @param {Dependency[]} dependencies dependency group resolving to one module
|
|
42
|
+
* @returns {Set<string> | true} requested export names, true for all
|
|
43
|
+
*/
|
|
44
|
+
function getForwardedIds(dependencies) {
|
|
45
|
+
/** @type {Set<string>} */
|
|
46
|
+
const ids = new Set();
|
|
47
|
+
for (const dependency of dependencies) {
|
|
48
|
+
// TODO remove in webpack 6
|
|
49
|
+
// It may be missing on custom dependency types not extending the base Dependency
|
|
50
|
+
if (!("getForwardId" in dependency)) continue;
|
|
51
|
+
|
|
52
|
+
const id = dependency.getForwardId();
|
|
53
|
+
if (id === true) return true;
|
|
54
|
+
if (id !== null) ids.add(id);
|
|
55
|
+
}
|
|
56
|
+
return ids;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Tracks the deferred (not yet factorized/built) dependencies of a
|
|
61
|
+
* side-effect-free barrel module and which export names resolve to them.
|
|
62
|
+
*/
|
|
63
|
+
class LazyBarrelInfo {
|
|
64
|
+
constructor() {
|
|
65
|
+
/** @type {Map<string, string>} forward id -> request key */
|
|
66
|
+
this._forwardIdToRequest = new Map();
|
|
67
|
+
/** @type {Map<string, DependencyGroup>} request key -> still-deferred group */
|
|
68
|
+
this._requestToDepGroup = new Map();
|
|
69
|
+
/** @type {Set<string> | undefined} locally provided export names */
|
|
70
|
+
this._terminalIds = undefined;
|
|
71
|
+
/** @type {Set<string> | undefined} requests of star re-exports */
|
|
72
|
+
this._fallbackRequests = undefined;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Records a deferred dependency under its request key.
|
|
77
|
+
* @param {string} requestKey request key
|
|
78
|
+
* @param {Dependency} dependency dependency to defer
|
|
79
|
+
* @param {ModuleFactory} factory factory for the request
|
|
80
|
+
* @param {string | undefined} context request context
|
|
81
|
+
*/
|
|
82
|
+
addLazy(requestKey, dependency, factory, context) {
|
|
83
|
+
let group = this._requestToDepGroup.get(requestKey);
|
|
84
|
+
if (group === undefined) {
|
|
85
|
+
group = { factory, dependencies: [], context };
|
|
86
|
+
this._requestToDepGroup.set(requestKey, group);
|
|
87
|
+
}
|
|
88
|
+
group.dependencies.push(dependency);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Maps an export name to the request providing it.
|
|
93
|
+
* @param {string} id export name
|
|
94
|
+
* @param {string} requestKey request key
|
|
95
|
+
*/
|
|
96
|
+
addForwardId(id, requestKey) {
|
|
97
|
+
this._forwardIdToRequest.set(id, requestKey);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Registers a locally provided export name.
|
|
102
|
+
* @param {string} id export name
|
|
103
|
+
*/
|
|
104
|
+
addTerminal(id) {
|
|
105
|
+
if (this._terminalIds === undefined) this._terminalIds = new Set();
|
|
106
|
+
this._terminalIds.add(id);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Registers a star re-export request key.
|
|
111
|
+
* @param {string} requestKey request key
|
|
112
|
+
*/
|
|
113
|
+
addFallback(requestKey) {
|
|
114
|
+
if (this._fallbackRequests === undefined) {
|
|
115
|
+
this._fallbackRequests = new Set();
|
|
116
|
+
}
|
|
117
|
+
this._fallbackRequests.add(requestKey);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Returns whether nothing is deferred.
|
|
122
|
+
* @returns {boolean} true, when no dependency is deferred
|
|
123
|
+
*/
|
|
124
|
+
isEmpty() {
|
|
125
|
+
return this._requestToDepGroup.size === 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Returns the requests of the still-lazy groups.
|
|
130
|
+
* @returns {Iterable<string>} still-lazy requests
|
|
131
|
+
*/
|
|
132
|
+
getLazyRequests() {
|
|
133
|
+
return this._requestToDepGroup.keys();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Drops the export-name lookups once no group stays deferred; they only serve
|
|
138
|
+
* to find still-deferred groups, so keeping them per module wastes memory.
|
|
139
|
+
*/
|
|
140
|
+
_release() {
|
|
141
|
+
this._forwardIdToRequest.clear();
|
|
142
|
+
this._terminalIds = undefined;
|
|
143
|
+
this._fallbackRequests = undefined;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Removes and returns the groups needed to provide the requested export names.
|
|
148
|
+
* @param {Set<string> | true} forwardedIds requested export names, true for all
|
|
149
|
+
* @returns {DependencyGroup[]} groups that must be processed now
|
|
150
|
+
*/
|
|
151
|
+
request(forwardedIds) {
|
|
152
|
+
/** @type {DependencyGroup[]} */
|
|
153
|
+
const result = [];
|
|
154
|
+
/**
|
|
155
|
+
* @param {DependencyGroup} group taken group
|
|
156
|
+
*/
|
|
157
|
+
const unlazy = (group) => {
|
|
158
|
+
for (const dependency of group.dependencies) {
|
|
159
|
+
dependency.setLazy(false);
|
|
160
|
+
}
|
|
161
|
+
result.push(group);
|
|
162
|
+
};
|
|
163
|
+
if (forwardedIds === true) {
|
|
164
|
+
for (const group of this._requestToDepGroup.values()) unlazy(group);
|
|
165
|
+
this._requestToDepGroup.clear();
|
|
166
|
+
this._release();
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @param {string} requestKey request key to take
|
|
171
|
+
*/
|
|
172
|
+
const take = (requestKey) => {
|
|
173
|
+
const group = this._requestToDepGroup.get(requestKey);
|
|
174
|
+
if (group === undefined) return;
|
|
175
|
+
this._requestToDepGroup.delete(requestKey);
|
|
176
|
+
unlazy(group);
|
|
177
|
+
};
|
|
178
|
+
for (const id of forwardedIds) {
|
|
179
|
+
if (this._terminalIds !== undefined && this._terminalIds.has(id)) {
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const requestKey = this._forwardIdToRequest.get(id);
|
|
183
|
+
if (requestKey !== undefined) {
|
|
184
|
+
take(requestKey);
|
|
185
|
+
} else if (this._fallbackRequests !== undefined) {
|
|
186
|
+
// unknown name: any star re-export may provide it
|
|
187
|
+
for (const fallbackKey of this._fallbackRequests) take(fallbackKey);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (this._requestToDepGroup.size === 0) this._release();
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const esmDependencyCategory = "esm";
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Owns the per side-effect-free module lazy barrel state for a `Compilation`,
|
|
199
|
+
* keeping the deferral bookkeeping out of `Compilation` itself.
|
|
200
|
+
*/
|
|
201
|
+
class LazyBarrelController {
|
|
202
|
+
/**
|
|
203
|
+
* @param {Compilation} compilation the owning compilation
|
|
204
|
+
*/
|
|
205
|
+
constructor(compilation) {
|
|
206
|
+
/** @type {Compilation} */
|
|
207
|
+
this._compilation = compilation;
|
|
208
|
+
/** @type {WeakMap<Module, LazyBarrelState>} */
|
|
209
|
+
this._modules = new WeakMap();
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Releases all per-module deferral state. The last consumer is
|
|
214
|
+
* `FlagDependencyExportsPlugin`'s cache key during `finishModules`, so the
|
|
215
|
+
* bookkeeping is dead weight once sealing starts.
|
|
216
|
+
*/
|
|
217
|
+
clear() {
|
|
218
|
+
this._modules = new WeakMap();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* requests of the re-export targets `module` still keeps lazy.
|
|
223
|
+
* `FlagDependencyExportsPlugin` folds them into its provided-exports cache
|
|
224
|
+
* key, so a barrel whose built targets differ from a cached run does not
|
|
225
|
+
* reuse that run's stale exports.
|
|
226
|
+
* @param {Module} module the module
|
|
227
|
+
* @returns {Iterable<string> | undefined} still-lazy requests, if any
|
|
228
|
+
*/
|
|
229
|
+
getLazyRequests(module) {
|
|
230
|
+
const factoryMeta = module.factoryMeta;
|
|
231
|
+
if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
|
|
232
|
+
const state = this._modules.get(module);
|
|
233
|
+
if (state === undefined) return;
|
|
234
|
+
const info = state.lazyBarrelInfo;
|
|
235
|
+
if (info === undefined || info.isEmpty()) return;
|
|
236
|
+
return info.getLazyRequests();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Classifies the re-export dependencies of a side-effect-free module (lazy barrel)
|
|
241
|
+
* into deferrable groups and marks the deferred ones.
|
|
242
|
+
* @param {Module} module the module whose dependencies are processed
|
|
243
|
+
* @returns {boolean} true, when some dependencies were deferred
|
|
244
|
+
*/
|
|
245
|
+
classify(module) {
|
|
246
|
+
const modules = this._modules;
|
|
247
|
+
const factoryMeta = module.factoryMeta;
|
|
248
|
+
if (factoryMeta === undefined || !factoryMeta.sideEffectFree) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
const dependencies = module.dependencies;
|
|
252
|
+
const dependencyFactories = this._compilation.dependencyFactories;
|
|
253
|
+
/** @type {LazyBarrelInfo | undefined} */
|
|
254
|
+
let info;
|
|
255
|
+
let hasFallback = false;
|
|
256
|
+
for (const dep of dependencies) {
|
|
257
|
+
// TODO remove in webpack 6
|
|
258
|
+
// It may be missing on custom dependency types not extending the base Dependency
|
|
259
|
+
if (!("getLazyUntil" in dep)) continue;
|
|
260
|
+
|
|
261
|
+
const until = dep.getLazyUntil();
|
|
262
|
+
// null (eager) and LAZY_UNTIL_LOCAL (terminal) defer nothing; terminals are
|
|
263
|
+
// only consulted alongside a star re-export, so they are recorded below
|
|
264
|
+
if (until === null || until === Dependency.LAZY_UNTIL_LOCAL) continue;
|
|
265
|
+
// deferrable: setLazy is needed to toggle its deferred state
|
|
266
|
+
if (!("setLazy" in dep)) continue;
|
|
267
|
+
const resourceIdent = dep.getResourceIdentifier();
|
|
268
|
+
if (resourceIdent === null) continue;
|
|
269
|
+
const factory = dependencyFactories.get(
|
|
270
|
+
/** @type {DependencyConstructor} */ (dep.constructor)
|
|
271
|
+
);
|
|
272
|
+
if (factory === undefined) continue;
|
|
273
|
+
const category = dep.category;
|
|
274
|
+
// Match the request grouping key of `processDependencyForResolving`
|
|
275
|
+
const requestKey =
|
|
276
|
+
category === esmDependencyCategory
|
|
277
|
+
? resourceIdent
|
|
278
|
+
: `${category}${resourceIdent}`;
|
|
279
|
+
if (info === undefined) info = new LazyBarrelInfo();
|
|
280
|
+
if (dep.isLazy()) {
|
|
281
|
+
info.addLazy(requestKey, dep, factory, dep.getContext());
|
|
282
|
+
}
|
|
283
|
+
if (until === Dependency.LAZY_UNTIL_ID) {
|
|
284
|
+
info.addForwardId(
|
|
285
|
+
/** @type {string} */ (dep.getLazyName()),
|
|
286
|
+
requestKey
|
|
287
|
+
);
|
|
288
|
+
} else if (until === Dependency.LAZY_UNTIL_FALLBACK) {
|
|
289
|
+
info.addFallback(requestKey);
|
|
290
|
+
hasFallback = true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
const state = modules.get(module);
|
|
294
|
+
// info is only created once a deferrable target exists, so it is never empty here
|
|
295
|
+
if (info === undefined) {
|
|
296
|
+
if (state !== undefined) modules.delete(module);
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
// terminals only matter together with a star re-export (to avoid building it
|
|
300
|
+
// for a locally-provided name); skip the extra pass otherwise
|
|
301
|
+
if (hasFallback) {
|
|
302
|
+
for (const dep of dependencies) {
|
|
303
|
+
if (
|
|
304
|
+
"getLazyUntil" in dep &&
|
|
305
|
+
dep.getLazyUntil() === Dependency.LAZY_UNTIL_LOCAL
|
|
306
|
+
) {
|
|
307
|
+
info.addTerminal(/** @type {string} */ (dep.getLazyName()));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (state !== undefined) {
|
|
312
|
+
// barrel classified after its targets were already requested: replay the
|
|
313
|
+
// recorded ids so processDependency un-lazies and builds those targets now
|
|
314
|
+
info.request(state.forwardedIds);
|
|
315
|
+
// stay lazy only while some targets remain deferred
|
|
316
|
+
if (info.isEmpty()) return false;
|
|
317
|
+
state.lazyBarrelInfo = info;
|
|
318
|
+
return true;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
modules.set(module, {
|
|
322
|
+
forwardedIds: new Set(),
|
|
323
|
+
lazyBarrelInfo: info
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Requests the export names that `dependencies` need from a lazy barrel and
|
|
331
|
+
* returns the deferred re-export targets that must be built now. Records the
|
|
332
|
+
* request when the barrel's dependencies were not classified yet.
|
|
333
|
+
* @param {Module} module the resolved module
|
|
334
|
+
* @param {Dependency[]} dependencies the dependencies that resolved to the module
|
|
335
|
+
* @returns {UnlazyDependencyInfo[] | undefined} items to process, if any
|
|
336
|
+
*/
|
|
337
|
+
request(module, dependencies) {
|
|
338
|
+
// state only exists for side-effect-free modules, so a non-side-effect-free
|
|
339
|
+
// module never has state — skip the WeakMap lookup entirely for it
|
|
340
|
+
const factoryMeta = module.factoryMeta;
|
|
341
|
+
if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
|
|
342
|
+
const modules = this._modules;
|
|
343
|
+
const state = modules.get(module);
|
|
344
|
+
|
|
345
|
+
if (state === undefined) {
|
|
346
|
+
const forwardedIds = getForwardedIds(dependencies);
|
|
347
|
+
if (forwardedIds !== true && forwardedIds.size === 0) return;
|
|
348
|
+
modules.set(module, {
|
|
349
|
+
forwardedIds,
|
|
350
|
+
lazyBarrelInfo: undefined
|
|
351
|
+
});
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const forwardedIds = getForwardedIds(dependencies);
|
|
356
|
+
if (forwardedIds !== true && forwardedIds.size === 0) return;
|
|
357
|
+
if (state.forwardedIds !== true) {
|
|
358
|
+
if (forwardedIds === true) state.forwardedIds = true;
|
|
359
|
+
else for (const id of forwardedIds) state.forwardedIds.add(id);
|
|
360
|
+
}
|
|
361
|
+
const info = state.lazyBarrelInfo;
|
|
362
|
+
// Pending requests will be replayed during `classify` later
|
|
363
|
+
if (info === undefined) return;
|
|
364
|
+
const groups = info.request(forwardedIds);
|
|
365
|
+
// drop the per-module state once every deferred target has been built
|
|
366
|
+
if (info.isEmpty()) state.lazyBarrelInfo = undefined;
|
|
367
|
+
if (groups.length === 0) return;
|
|
368
|
+
return groups.map((group) => ({
|
|
369
|
+
factory: group.factory,
|
|
370
|
+
dependencies: group.dependencies,
|
|
371
|
+
context: group.context,
|
|
372
|
+
originModule: module
|
|
373
|
+
}));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Queues the deferred dependency groups of a lazy barrel requested by a single dependency.
|
|
378
|
+
* @param {Module} module the resolved module of the dependency
|
|
379
|
+
* @param {Dependency} dependency the requesting dependency
|
|
380
|
+
* @param {{ factory: ModuleFactory, dependencies: Dependency[], context: string | undefined, originModule: Module | null }[]} sortedDependencies item list to append to
|
|
381
|
+
*/
|
|
382
|
+
unlazyForDependency(module, dependency, sortedDependencies) {
|
|
383
|
+
const unlazyItems = this.request(module, [dependency]);
|
|
384
|
+
if (unlazyItems === undefined) return;
|
|
385
|
+
for (const item of unlazyItems) sortedDependencies.push(item);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
module.exports = LazyBarrelController;
|
|
@@ -17,6 +17,7 @@ const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
|
|
|
17
17
|
// TODO webpack 6 remove
|
|
18
18
|
class LibraryTemplatePlugin {
|
|
19
19
|
/**
|
|
20
|
+
* Creates an instance of LibraryTemplatePlugin.
|
|
20
21
|
* @param {LibraryName} name name of library
|
|
21
22
|
* @param {LibraryType} target type of library
|
|
22
23
|
* @param {UmdNamedDefine} umdNamedDefine setting this to true will name the UMD module
|
|
@@ -34,7 +35,7 @@ class LibraryTemplatePlugin {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
/**
|
|
37
|
-
*
|
|
38
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
38
39
|
* @param {Compiler} compiler the compiler instance
|
|
39
40
|
* @returns {void}
|
|
40
41
|
*/
|
|
@@ -13,6 +13,7 @@ const NormalModule = require("./NormalModule");
|
|
|
13
13
|
/** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
+
* Defines the loader context type used by this module.
|
|
16
17
|
* @template T
|
|
17
18
|
* @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
|
|
18
19
|
*/
|
|
@@ -21,6 +22,7 @@ const PLUGIN_NAME = "LoaderOptionsPlugin";
|
|
|
21
22
|
|
|
22
23
|
class LoaderOptionsPlugin {
|
|
23
24
|
/**
|
|
25
|
+
* Creates an instance of LoaderOptionsPlugin.
|
|
24
26
|
* @param {LoaderOptionsPluginOptions & MatchObject} options options object
|
|
25
27
|
*/
|
|
26
28
|
constructor(options = {}) {
|
|
@@ -34,7 +36,7 @@ class LoaderOptionsPlugin {
|
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
39
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
38
40
|
* @param {Compiler} compiler the compiler instance
|
|
39
41
|
* @returns {void}
|
|
40
42
|
*/
|
|
@@ -13,14 +13,16 @@ const PLUGIN_NAME = "LoaderTargetPlugin";
|
|
|
13
13
|
|
|
14
14
|
class LoaderTargetPlugin {
|
|
15
15
|
/**
|
|
16
|
+
* Creates an instance of LoaderTargetPlugin.
|
|
16
17
|
* @param {string} target the target
|
|
17
18
|
*/
|
|
18
19
|
constructor(target) {
|
|
20
|
+
/** @type {string} */
|
|
19
21
|
this.target = target;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
|
-
*
|
|
25
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
24
26
|
* @param {Compiler} compiler the compiler instance
|
|
25
27
|
* @returns {void}
|
|
26
28
|
*/
|
package/lib/MainTemplate.js
CHANGED
|
@@ -26,6 +26,7 @@ const memoize = require("./util/memoize");
|
|
|
26
26
|
/** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
|
|
27
27
|
/** @typedef {import("./TemplatedPathPlugin").PathData} PathData */
|
|
28
28
|
/**
|
|
29
|
+
* Defines the if set type used by this module.
|
|
29
30
|
* @template T
|
|
30
31
|
* @typedef {import("tapable").IfSet<T>} IfSet
|
|
31
32
|
*/
|
|
@@ -43,6 +44,7 @@ const getLoadScriptRuntimeModule = memoize(() =>
|
|
|
43
44
|
// TODO webpack 6 remove this class
|
|
44
45
|
class MainTemplate {
|
|
45
46
|
/**
|
|
47
|
+
* Creates an instance of MainTemplate.
|
|
46
48
|
* @param {OutputOptions} outputOptions output options for the MainTemplate
|
|
47
49
|
* @param {Compilation} compilation the compilation
|
|
48
50
|
*/
|
|
@@ -53,6 +55,7 @@ class MainTemplate {
|
|
|
53
55
|
renderManifest: {
|
|
54
56
|
tap: util.deprecate(
|
|
55
57
|
/**
|
|
58
|
+
* Handles the callback logic for this hook.
|
|
56
59
|
* @template AdditionalOptions
|
|
57
60
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
58
61
|
* @param {(renderManifestEntries: RenderManifestEntry[], renderManifestOptions: RenderManifestOptions) => RenderManifestEntry[]} fn fn
|
|
@@ -87,6 +90,7 @@ class MainTemplate {
|
|
|
87
90
|
require: {
|
|
88
91
|
tap: util.deprecate(
|
|
89
92
|
/**
|
|
93
|
+
* Handles the callback logic for this hook.
|
|
90
94
|
* @template AdditionalOptions
|
|
91
95
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
92
96
|
* @param {(value: string, renderBootstrapContext: RenderBootstrapContext) => string} fn fn
|
|
@@ -124,6 +128,7 @@ class MainTemplate {
|
|
|
124
128
|
render: {
|
|
125
129
|
tap: util.deprecate(
|
|
126
130
|
/**
|
|
131
|
+
* Handles the callback logic for this hook.
|
|
127
132
|
* @template AdditionalOptions
|
|
128
133
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
129
134
|
* @param {(source: Source, chunk: Chunk, hash: string | undefined, moduleTemplate: ModuleTemplate, dependencyTemplates: DependencyTemplates) => Source} fn fn
|
|
@@ -156,6 +161,7 @@ class MainTemplate {
|
|
|
156
161
|
renderWithEntry: {
|
|
157
162
|
tap: util.deprecate(
|
|
158
163
|
/**
|
|
164
|
+
* Handles the callback logic for this hook.
|
|
159
165
|
* @template AdditionalOptions
|
|
160
166
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
161
167
|
* @param {(source: Source, chunk: Chunk, hash: string | undefined) => Source} fn fn
|
|
@@ -182,6 +188,7 @@ class MainTemplate {
|
|
|
182
188
|
assetPath: {
|
|
183
189
|
tap: util.deprecate(
|
|
184
190
|
/**
|
|
191
|
+
* Handles the callback logic for this hook.
|
|
185
192
|
* @template AdditionalOptions
|
|
186
193
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
187
194
|
* @param {(value: string, path: PathData, assetInfo: AssetInfo | undefined) => string} fn fn
|
|
@@ -194,6 +201,7 @@ class MainTemplate {
|
|
|
194
201
|
),
|
|
195
202
|
call: util.deprecate(
|
|
196
203
|
/**
|
|
204
|
+
* Handles the call callback for this hook.
|
|
197
205
|
* @param {TemplatePath} filename used to get asset path with hash
|
|
198
206
|
* @param {PathData} options context data
|
|
199
207
|
* @returns {string} interpolated path
|
|
@@ -206,6 +214,7 @@ class MainTemplate {
|
|
|
206
214
|
hash: {
|
|
207
215
|
tap: util.deprecate(
|
|
208
216
|
/**
|
|
217
|
+
* Handles the callback logic for this hook.
|
|
209
218
|
* @template AdditionalOptions
|
|
210
219
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
211
220
|
* @param {(hash: Hash) => void} fn fn
|
|
@@ -220,6 +229,7 @@ class MainTemplate {
|
|
|
220
229
|
hashForChunk: {
|
|
221
230
|
tap: util.deprecate(
|
|
222
231
|
/**
|
|
232
|
+
* Handles the callback logic for this hook.
|
|
223
233
|
* @template AdditionalOptions
|
|
224
234
|
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
|
225
235
|
* @param {(hash: Hash, chunk: Chunk) => void} fn fn
|
|
@@ -295,6 +305,7 @@ class MainTemplate {
|
|
|
295
305
|
|
|
296
306
|
this.renderCurrentHashCode = util.deprecate(
|
|
297
307
|
/**
|
|
308
|
+
* Handles the require ensure callback for this hook.
|
|
298
309
|
* @deprecated
|
|
299
310
|
* @param {string} hash the hash
|
|
300
311
|
* @param {number=} length length of the hash
|
|
@@ -314,6 +325,7 @@ class MainTemplate {
|
|
|
314
325
|
|
|
315
326
|
this.getPublicPath = util.deprecate(
|
|
316
327
|
/**
|
|
328
|
+
* Handles the callback logic for this hook.
|
|
317
329
|
* @param {PathData} options context data
|
|
318
330
|
* @returns {string} interpolated path
|
|
319
331
|
*/ (options) =>
|
|
@@ -324,6 +336,7 @@ class MainTemplate {
|
|
|
324
336
|
|
|
325
337
|
this.getAssetPath = util.deprecate(
|
|
326
338
|
/**
|
|
339
|
+
* Handles the callback logic for this hook.
|
|
327
340
|
* @param {TemplatePath} path used to get asset path with hash
|
|
328
341
|
* @param {PathData} options context data
|
|
329
342
|
* @returns {string} interpolated path
|
|
@@ -335,6 +348,7 @@ class MainTemplate {
|
|
|
335
348
|
|
|
336
349
|
this.getAssetPathWithInfo = util.deprecate(
|
|
337
350
|
/**
|
|
351
|
+
* Handles the callback logic for this hook.
|
|
338
352
|
* @param {TemplatePath} path used to get asset path with hash
|
|
339
353
|
* @param {PathData} options context data
|
|
340
354
|
* @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
|
|
@@ -357,6 +371,7 @@ Object.defineProperty(MainTemplate.prototype, "requireFn", {
|
|
|
357
371
|
Object.defineProperty(MainTemplate.prototype, "outputOptions", {
|
|
358
372
|
get: util.deprecate(
|
|
359
373
|
/**
|
|
374
|
+
* Returns output options.
|
|
360
375
|
* @this {MainTemplate}
|
|
361
376
|
* @returns {OutputOptions} output options
|
|
362
377
|
*/
|
package/lib/ManifestPlugin.js
CHANGED
|
@@ -28,6 +28,7 @@ const HotUpdateChunk = require("./HotUpdateChunk");
|
|
|
28
28
|
const PLUGIN_NAME = "ManifestPlugin";
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
+
* Returns extname.
|
|
31
32
|
* @param {string} filename filename
|
|
32
33
|
* @returns {string} extname
|
|
33
34
|
*/
|
|
@@ -46,6 +47,7 @@ const DEFAULT_FILENAME = "manifest.json";
|
|
|
46
47
|
|
|
47
48
|
class ManifestPlugin {
|
|
48
49
|
/**
|
|
50
|
+
* Creates an instance of ManifestPlugin.
|
|
49
51
|
* @param {ManifestPluginOptions} options options
|
|
50
52
|
*/
|
|
51
53
|
constructor(options = {}) {
|
|
@@ -54,7 +56,7 @@ class ManifestPlugin {
|
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
/**
|
|
57
|
-
*
|
|
59
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
58
60
|
* @param {Compiler} compiler the compiler instance
|
|
59
61
|
* @returns {void}
|
|
60
62
|
*/
|
|
@@ -71,7 +73,8 @@ class ManifestPlugin {
|
|
|
71
73
|
);
|
|
72
74
|
});
|
|
73
75
|
|
|
74
|
-
const entrypoints =
|
|
76
|
+
const entrypoints =
|
|
77
|
+
this.options.entrypoints !== undefined ? this.options.entrypoints : true;
|
|
75
78
|
const serialize =
|
|
76
79
|
this.options.serialize ||
|
|
77
80
|
((manifest) => JSON.stringify(manifest, null, 2));
|
|
@@ -89,6 +92,7 @@ class ManifestPlugin {
|
|
|
89
92
|
);
|
|
90
93
|
|
|
91
94
|
/**
|
|
95
|
+
* Creates a hash reg exp.
|
|
92
96
|
* @param {string | string[]} value value
|
|
93
97
|
* @returns {RegExp} regexp to remove hash
|
|
94
98
|
*/
|
|
@@ -99,6 +103,7 @@ class ManifestPlugin {
|
|
|
99
103
|
);
|
|
100
104
|
|
|
101
105
|
/**
|
|
106
|
+
* Removes the provided name from the manifest plugin.
|
|
102
107
|
* @param {string} name name
|
|
103
108
|
* @param {AssetInfo | null} info asset info
|
|
104
109
|
* @returns {string} hash removed name
|
|
@@ -112,6 +117,7 @@ class ManifestPlugin {
|
|
|
112
117
|
};
|
|
113
118
|
|
|
114
119
|
/**
|
|
120
|
+
* Returns chunk name or chunk id.
|
|
115
121
|
* @param {Chunk} chunk chunk
|
|
116
122
|
* @returns {ChunkName | ChunkId} chunk name or chunk id
|
|
117
123
|
*/
|
|
@@ -163,6 +169,7 @@ class ManifestPlugin {
|
|
|
163
169
|
const added = new Set();
|
|
164
170
|
|
|
165
171
|
/**
|
|
172
|
+
* Processes the provided file.
|
|
166
173
|
* @param {string} file file
|
|
167
174
|
* @param {string=} usedName usedName
|
|
168
175
|
* @returns {void}
|