@depup/webpack 5.109.2-depup.0 → 5.110.3-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 +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
|
|
9
|
+
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
10
|
+
const UnusedReexportsWarning = require("../errors/UnusedReexportsWarning");
|
|
11
|
+
const { compareStrings } = require("../util/comparators");
|
|
12
|
+
const getModuleSize = require("./getModuleSize");
|
|
13
|
+
const hasOnlyUnusedExports = require("./hasOnlyUnusedExports");
|
|
14
|
+
|
|
15
|
+
/** @import { PerformanceOptions } from "../../declarations/WebpackOptions" */
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
17
|
+
/** @import Module from "../Module" */
|
|
18
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
19
|
+
/** @import { UnusedReexportDetails } from "../errors/UnusedReexportsWarning" */
|
|
20
|
+
|
|
21
|
+
const PLUGIN_NAME = "UnusedReexportsPlugin";
|
|
22
|
+
|
|
23
|
+
// Enough to name the offenders without listing the barrel.
|
|
24
|
+
const MAX_REPORTED_MODULES = 5;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Tells whether every module pulling this one in does so by re-exporting it.
|
|
28
|
+
* One an importer wants for its side effects alone is deliberate, not a
|
|
29
|
+
* barrel's leftover.
|
|
30
|
+
* @param {Module} module the module to look up
|
|
31
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
32
|
+
* @returns {boolean} true when only re-exports pull it in
|
|
33
|
+
*/
|
|
34
|
+
const isOnlyReexported = (module, moduleGraph) => {
|
|
35
|
+
// A re-export emits a side-effect edge of its own, so edges are grouped by
|
|
36
|
+
// the statement they come from — `sourceOrder` — rather than by their type.
|
|
37
|
+
/** @type {Map<Module, Set<number | undefined>>} */
|
|
38
|
+
const reexportedStatements = new Map();
|
|
39
|
+
/** @type {[Module, number | undefined][]} */
|
|
40
|
+
const edges = [];
|
|
41
|
+
|
|
42
|
+
for (const connection of moduleGraph.getIncomingConnections(module)) {
|
|
43
|
+
const origin = connection.originModule;
|
|
44
|
+
|
|
45
|
+
// An entry has no origin: it is in the build because it was asked for.
|
|
46
|
+
if (!origin) return false;
|
|
47
|
+
|
|
48
|
+
const dependency = connection.dependency;
|
|
49
|
+
|
|
50
|
+
// Only an ESM import statement can carry a re-export.
|
|
51
|
+
if (!(dependency instanceof HarmonyImportDependency)) return false;
|
|
52
|
+
|
|
53
|
+
if (dependency instanceof HarmonyExportImportedSpecifierDependency) {
|
|
54
|
+
const statements = reexportedStatements.get(origin);
|
|
55
|
+
|
|
56
|
+
if (statements === undefined) {
|
|
57
|
+
reexportedStatements.set(origin, new Set([dependency.sourceOrder]));
|
|
58
|
+
} else {
|
|
59
|
+
statements.add(dependency.sourceOrder);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
edges.push([origin, dependency.sourceOrder]);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (edges.length === 0) return false;
|
|
67
|
+
|
|
68
|
+
for (const [origin, sourceOrder] of edges) {
|
|
69
|
+
const statements = reexportedStatements.get(origin);
|
|
70
|
+
|
|
71
|
+
if (statements === undefined || !statements.has(sourceOrder)) return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return true;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
class UnusedReexportsPlugin {
|
|
78
|
+
/**
|
|
79
|
+
* Creates an instance of UnusedReexportsPlugin.
|
|
80
|
+
* @param {PerformanceOptions} options the plugin options
|
|
81
|
+
*/
|
|
82
|
+
constructor(options) {
|
|
83
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
84
|
+
this.hints = options.hints;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
89
|
+
* @param {Compiler} compiler the compiler instance
|
|
90
|
+
* @returns {void}
|
|
91
|
+
*/
|
|
92
|
+
apply(compiler) {
|
|
93
|
+
const hints = this.hints;
|
|
94
|
+
|
|
95
|
+
if (!hints) return;
|
|
96
|
+
|
|
97
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
98
|
+
/** @type {UnusedReexportsWarning | undefined} */
|
|
99
|
+
let warning;
|
|
100
|
+
|
|
101
|
+
// Usage is final here, and concatenation has not merged the modules
|
|
102
|
+
// away yet, so each one can still be named and measured.
|
|
103
|
+
compilation.hooks.optimizeModules.tap(PLUGIN_NAME, (modules) => {
|
|
104
|
+
const { chunkGraph, moduleGraph, requestShortener } = compilation;
|
|
105
|
+
/** @type {UnusedReexportDetails[]} */
|
|
106
|
+
const unused = [];
|
|
107
|
+
let wasted = 0;
|
|
108
|
+
|
|
109
|
+
for (const module of modules) {
|
|
110
|
+
// One webpack already left out costs nothing.
|
|
111
|
+
if (chunkGraph.getNumberOfModuleChunks(module) === 0) continue;
|
|
112
|
+
|
|
113
|
+
if (!hasOnlyUnusedExports(module, moduleGraph, chunkGraph)) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (!isOnlyReexported(module, moduleGraph)) continue;
|
|
118
|
+
|
|
119
|
+
const size = getModuleSize(module);
|
|
120
|
+
|
|
121
|
+
wasted += size;
|
|
122
|
+
unused.push({
|
|
123
|
+
name: module.readableIdentifier(requestShortener),
|
|
124
|
+
size
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (unused.length === 0) return;
|
|
129
|
+
|
|
130
|
+
// Ties break by name: module order is not stable across runtimes.
|
|
131
|
+
unused.sort(
|
|
132
|
+
(a, b) => b.size - a.size || compareStrings(a.name, b.name)
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
warning = new UnusedReexportsWarning(
|
|
136
|
+
unused.slice(0, MAX_REPORTED_MODULES),
|
|
137
|
+
unused.length,
|
|
138
|
+
wasted
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Reported past the hash: `createHash` folds every message into it, so
|
|
143
|
+
// a hint pushed earlier would change the build's identity.
|
|
144
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
145
|
+
if (warning === undefined) return;
|
|
146
|
+
|
|
147
|
+
if (hints === "error") {
|
|
148
|
+
compilation.errors.push(warning);
|
|
149
|
+
} else if (hints === "stats") {
|
|
150
|
+
compilation.hints.push(warning);
|
|
151
|
+
} else {
|
|
152
|
+
compilation.warnings.push(warning);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
module.exports = UnusedReexportsPlugin;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const UnusedRuleWarning = require("../errors/UnusedRuleWarning");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @import {
|
|
12
|
+
* RuleSetRule,
|
|
13
|
+
* PerformanceOptions
|
|
14
|
+
* } from "../../declarations/WebpackOptions"
|
|
15
|
+
*/
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
17
|
+
|
|
18
|
+
const PLUGIN_NAME = "UnusedRuleWarningPlugin";
|
|
19
|
+
|
|
20
|
+
// `NormalModuleFactory` compiles `[{ rules: defaultRules }, { rules: rules }]`,
|
|
21
|
+
// so only this subtree belongs to the configuration.
|
|
22
|
+
const USER_RULES_PATH = "ruleSet[1].rules";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Names the rule the way its author would recognize it. `module.rules[7]` alone
|
|
26
|
+
* is useless when a plugin injected the rule.
|
|
27
|
+
* @param {RuleSetRule} rule the raw rule
|
|
28
|
+
* @returns {string} a short descriptor, or an empty string when nothing identifies it
|
|
29
|
+
*/
|
|
30
|
+
const describeRule = (rule) => {
|
|
31
|
+
for (const key of ["test", "include", "exclude", "resource", "mimetype"]) {
|
|
32
|
+
const value = rule[/** @type {keyof RuleSetRule} */ (key)];
|
|
33
|
+
if (value instanceof RegExp) return ` (${key}: ${value})`;
|
|
34
|
+
if (typeof value === "string") return ` (${key}: ${value})`;
|
|
35
|
+
}
|
|
36
|
+
if (typeof rule.loader === "string") return ` (loader: ${rule.loader})`;
|
|
37
|
+
if (typeof rule.type === "string") return ` (type: ${rule.type})`;
|
|
38
|
+
return "";
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
class UnusedRuleWarningPlugin {
|
|
42
|
+
/**
|
|
43
|
+
* Creates an instance of UnusedRuleWarningPlugin.
|
|
44
|
+
* @param {PerformanceOptions} options the plugin options
|
|
45
|
+
*/
|
|
46
|
+
constructor(options) {
|
|
47
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
48
|
+
this.hints = options.hints;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
53
|
+
* @param {Compiler} compiler the compiler instance
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*/
|
|
56
|
+
apply(compiler) {
|
|
57
|
+
const hints = this.hints;
|
|
58
|
+
|
|
59
|
+
compiler.hooks.compilation.tap(
|
|
60
|
+
PLUGIN_NAME,
|
|
61
|
+
(compilation, { normalModuleFactory }) => {
|
|
62
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
63
|
+
// Nothing was factorized, so no rule could match — an empty build is
|
|
64
|
+
// not evidence that a rule is unused.
|
|
65
|
+
if (compilation.modules.size === 0) return;
|
|
66
|
+
|
|
67
|
+
/** @type {string[]} */
|
|
68
|
+
const descriptions = [];
|
|
69
|
+
|
|
70
|
+
for (const rule of normalModuleFactory.ruleSet.unusedRules()) {
|
|
71
|
+
if (!rule.path.startsWith(USER_RULES_PATH)) continue;
|
|
72
|
+
// A rule aimed at another compiler of a MultiCompiler is inactive
|
|
73
|
+
// here by design, not by mistake.
|
|
74
|
+
if (
|
|
75
|
+
rule.conditions.some(
|
|
76
|
+
(condition) => condition.property === "compiler"
|
|
77
|
+
)
|
|
78
|
+
) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
descriptions.push(
|
|
82
|
+
`${rule.path.replace(USER_RULES_PATH, "module.rules")}${describeRule(
|
|
83
|
+
rule.raw
|
|
84
|
+
)}`
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (descriptions.length === 0) return;
|
|
89
|
+
|
|
90
|
+
const warning = new UnusedRuleWarning(descriptions);
|
|
91
|
+
|
|
92
|
+
if (hints === "error") {
|
|
93
|
+
compilation.errors.push(warning);
|
|
94
|
+
} else if (hints === "stats") {
|
|
95
|
+
compilation.hints.push(warning);
|
|
96
|
+
} else {
|
|
97
|
+
compilation.warnings.push(warning);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
module.exports = UnusedRuleWarningPlugin;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/** @import Module from "../Module" */
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Asks the module for its own source types rather than assuming javascript, so
|
|
12
|
+
* a css or asset module counts too.
|
|
13
|
+
* @param {Module} module a module
|
|
14
|
+
* @returns {number} its size over every source type it reports
|
|
15
|
+
*/
|
|
16
|
+
const getModuleSize = (module) => {
|
|
17
|
+
let size = 0;
|
|
18
|
+
for (const type of module.getSourceTypes()) size += module.size(type);
|
|
19
|
+
return size;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
module.exports = getModuleSize;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
9
|
+
|
|
10
|
+
/** @import Module from "../Module" */
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Yields the modules a user wrote, looking through scope hoisting: a
|
|
14
|
+
* concatenation is one module in the chunk graph but several on disk, and a
|
|
15
|
+
* hint about bytes or duplication has to name the ones on disk.
|
|
16
|
+
* @param {Module} module a module from the chunk graph
|
|
17
|
+
* @returns {Iterable<Module>} the modules it was built from, or itself
|
|
18
|
+
*/
|
|
19
|
+
const getSourceModules = (module) =>
|
|
20
|
+
module instanceof ConcatenatedModule ? module.modules : [module];
|
|
21
|
+
|
|
22
|
+
module.exports = getSourceModules;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { UsageState } = require("../ExportsInfo");
|
|
9
|
+
|
|
10
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
11
|
+
/** @import Module from "../Module" */
|
|
12
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Tells whether a module provides exports and no runtime uses any of them.
|
|
16
|
+
* One exporting nothing is there for its side effects, a different mistake.
|
|
17
|
+
* @param {Module} module the module to look up
|
|
18
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
19
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
20
|
+
* @returns {boolean} true when it provides exports and none are used
|
|
21
|
+
*/
|
|
22
|
+
const hasOnlyUnusedExports = (module, moduleGraph, chunkGraph) => {
|
|
23
|
+
const runtimes = [...chunkGraph.getModuleRuntimes(module)];
|
|
24
|
+
let provided = 0;
|
|
25
|
+
|
|
26
|
+
for (const exportInfo of moduleGraph.getExportsInfo(module).exports) {
|
|
27
|
+
if (!exportInfo.provided) continue;
|
|
28
|
+
|
|
29
|
+
provided++;
|
|
30
|
+
|
|
31
|
+
for (const runtime of runtimes) {
|
|
32
|
+
// `NoInfo` included: unknown usage is not unused.
|
|
33
|
+
if (exportInfo.getUsed(runtime) !== UsageState.Unused) return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return provided > 0;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
module.exports = hasOnlyUnusedExports;
|
|
@@ -7,17 +7,27 @@
|
|
|
7
7
|
const RuntimeModule = require("../RuntimeModule");
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
10
|
+
/** @import Compilation from "../Compilation" */
|
|
11
11
|
|
|
12
12
|
class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
|
13
|
+
/**
|
|
14
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
15
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
16
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
17
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
18
|
+
*/
|
|
19
|
+
shouldIsolate() {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
13
23
|
/**
|
|
14
24
|
* @param {"prefetch" | "preload"} type "prefetch" or "preload" chunk type function
|
|
15
|
-
* @param {string} runtimeFunction the runtime function name
|
|
25
|
+
* @param {string | null} runtimeFunction the runtime function name, or `null` where nothing fans out over the handlers
|
|
16
26
|
* @param {string} runtimeHandlers the runtime handlers
|
|
17
27
|
*/
|
|
18
28
|
constructor(type, runtimeFunction, runtimeHandlers) {
|
|
19
29
|
super(`chunk ${type} function`);
|
|
20
|
-
/** @type {string} */
|
|
30
|
+
/** @type {string | null} */
|
|
21
31
|
this.runtimeFunction = runtimeFunction;
|
|
22
32
|
/** @type {string} */
|
|
23
33
|
this.runtimeHandlers = runtimeHandlers;
|
|
@@ -33,13 +43,17 @@ class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
|
|
|
33
43
|
const { runtimeTemplate } = compilation;
|
|
34
44
|
return Template.asString([
|
|
35
45
|
`${runtimeHandlers} = {};`,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
...(runtimeFunction === null
|
|
47
|
+
? []
|
|
48
|
+
: [
|
|
49
|
+
`${runtimeFunction} = ${runtimeTemplate.basicFunction("chunkId", [
|
|
50
|
+
// map is shorter than forEach
|
|
51
|
+
`Object.keys(${runtimeHandlers}).map(${runtimeTemplate.basicFunction(
|
|
52
|
+
"key",
|
|
53
|
+
`${runtimeHandlers}[key](chunkId);`
|
|
54
|
+
)});`
|
|
55
|
+
])};`
|
|
56
|
+
])
|
|
43
57
|
]);
|
|
44
58
|
}
|
|
45
59
|
}
|
|
@@ -6,12 +6,23 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
-
const
|
|
10
|
-
const ChunkPrefetchStartupRuntimeModule = require("./ChunkPrefetchStartupRuntimeModule");
|
|
11
|
-
const ChunkPrefetchTriggerRuntimeModule = require("./ChunkPrefetchTriggerRuntimeModule");
|
|
12
|
-
const ChunkPreloadTriggerRuntimeModule = require("./ChunkPreloadTriggerRuntimeModule");
|
|
9
|
+
const lazyModule = require("../util/lazyModule");
|
|
13
10
|
|
|
14
|
-
/** @
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
|
+
|
|
13
|
+
// only a chunk graph carrying a prefetch/preload relation emits these
|
|
14
|
+
const getChunkPrefetchFunctionRuntimeModule = lazyModule(() =>
|
|
15
|
+
require("./ChunkPrefetchFunctionRuntimeModule")
|
|
16
|
+
);
|
|
17
|
+
const getChunkPrefetchStartupRuntimeModule = lazyModule(() =>
|
|
18
|
+
require("./ChunkPrefetchStartupRuntimeModule")
|
|
19
|
+
);
|
|
20
|
+
const getChunkPrefetchTriggerRuntimeModule = lazyModule(() =>
|
|
21
|
+
require("./ChunkPrefetchTriggerRuntimeModule")
|
|
22
|
+
);
|
|
23
|
+
const getChunkPreloadTriggerRuntimeModule = lazyModule(() =>
|
|
24
|
+
require("./ChunkPreloadTriggerRuntimeModule")
|
|
25
|
+
);
|
|
15
26
|
|
|
16
27
|
const PLUGIN_NAME = "ChunkPrefetchPreloadPlugin";
|
|
17
28
|
|
|
@@ -40,9 +51,10 @@ class ChunkPrefetchPreloadPlugin {
|
|
|
40
51
|
set.add(RuntimeGlobals.prefetchChunk);
|
|
41
52
|
set.add(RuntimeGlobals.onChunksLoaded);
|
|
42
53
|
set.add(RuntimeGlobals.exports);
|
|
43
|
-
compilation.
|
|
54
|
+
compilation.addLazyRuntimeModule(
|
|
44
55
|
chunk,
|
|
45
|
-
|
|
56
|
+
getChunkPrefetchStartupRuntimeModule,
|
|
57
|
+
(Ctor) => new Ctor(startupChildChunks)
|
|
46
58
|
);
|
|
47
59
|
}
|
|
48
60
|
}
|
|
@@ -54,61 +66,66 @@ class ChunkPrefetchPreloadPlugin {
|
|
|
54
66
|
|
|
55
67
|
if (chunkMap.prefetch) {
|
|
56
68
|
set.add(RuntimeGlobals.prefetchChunk);
|
|
57
|
-
compilation.
|
|
69
|
+
compilation.addLazyRuntimeModule(
|
|
58
70
|
chunk,
|
|
59
|
-
|
|
71
|
+
getChunkPrefetchTriggerRuntimeModule,
|
|
72
|
+
(Ctor) => new Ctor(chunkMap.prefetch)
|
|
60
73
|
);
|
|
61
74
|
}
|
|
62
75
|
if (chunkMap.preload) {
|
|
63
76
|
set.add(RuntimeGlobals.preloadChunk);
|
|
64
|
-
compilation.
|
|
77
|
+
compilation.addLazyRuntimeModule(
|
|
65
78
|
chunk,
|
|
66
|
-
|
|
79
|
+
getChunkPreloadTriggerRuntimeModule,
|
|
80
|
+
(Ctor) => new Ctor(chunkMap.preload)
|
|
67
81
|
);
|
|
68
82
|
}
|
|
69
83
|
if (chunkMap.cssPreload) {
|
|
70
84
|
// CSS-only preload (`parser.javascript.dynamicImportCssPreload`):
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
set.add(RuntimeGlobals.preloadChunk);
|
|
85
|
+
// the trigger reaches the CSS `.s` handler itself
|
|
86
|
+
// (`<link rel="preload" as="style">`), so it asks for the handlers
|
|
87
|
+
// alone — nothing here calls the one that fans out over them.
|
|
75
88
|
set.add(RuntimeGlobals.preloadChunkHandlers);
|
|
76
|
-
compilation.
|
|
89
|
+
compilation.addLazyRuntimeModule(
|
|
77
90
|
chunk,
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"cssPreload"
|
|
81
|
-
)
|
|
91
|
+
getChunkPreloadTriggerRuntimeModule,
|
|
92
|
+
(Ctor) => new Ctor(chunkMap.cssPreload, "cssPreload")
|
|
82
93
|
);
|
|
83
94
|
}
|
|
84
95
|
}
|
|
85
96
|
);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
|
|
97
|
+
// The handlers object is what carries the runtime module, so a chunk asking
|
|
98
|
+
// only for it — a trigger that reaches one handler by name — ships no
|
|
99
|
+
// fan-out function. Whether one is wanted is read here rather than in
|
|
100
|
+
// `create`, which runs after the requirement pass is over.
|
|
101
|
+
for (const [type, fn, handlers] of /** @type {const} */ ([
|
|
102
|
+
[
|
|
103
|
+
"prefetch",
|
|
104
|
+
RuntimeGlobals.prefetchChunk,
|
|
105
|
+
RuntimeGlobals.prefetchChunkHandlers
|
|
106
|
+
],
|
|
107
|
+
[
|
|
108
|
+
"preload",
|
|
109
|
+
RuntimeGlobals.preloadChunk,
|
|
110
|
+
RuntimeGlobals.preloadChunkHandlers
|
|
111
|
+
]
|
|
112
|
+
])) {
|
|
113
|
+
compilation.hooks.runtimeRequirementInTree
|
|
114
|
+
.for(fn)
|
|
115
|
+
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
116
|
+
set.add(handlers);
|
|
117
|
+
});
|
|
118
|
+
compilation.hooks.runtimeRequirementInTree
|
|
119
|
+
.for(handlers)
|
|
120
|
+
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
121
|
+
const runtimeFunction = set.has(fn) ? fn : null;
|
|
122
|
+
compilation.addLazyRuntimeModule(
|
|
123
|
+
chunk,
|
|
124
|
+
getChunkPrefetchFunctionRuntimeModule,
|
|
125
|
+
(Ctor) => new Ctor(type, runtimeFunction, handlers)
|
|
126
|
+
);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
112
129
|
});
|
|
113
130
|
}
|
|
114
131
|
}
|
|
@@ -8,9 +8,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @typedef {import("../Compilation")} Compilation */
|
|
11
|
+
/** @import Chunk, { ChunkChildOfTypeInOrder } from "../Chunk" */
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
14
13
|
|
|
15
14
|
class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
|
|
16
15
|
/**
|
|
@@ -8,8 +8,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
/** @import { ChunkChildIdsByOrdersMap } from "../Chunk" */
|
|
13
13
|
|
|
14
14
|
class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
|
|
15
15
|
/**
|
|
@@ -8,8 +8,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
/** @import { ChunkChildIdsByOrdersMap } from "../Chunk" */
|
|
13
13
|
|
|
14
14
|
class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
|
|
15
15
|
/**
|